查看模块 严格来说, nginx 自带是没有针对负载均衡后端节点的健康检查的,但是可以通过默认自带的 ngx_http_proxy_module 模块和 ngx_http_upstream_module 模块中的相关指令来完成当后端节点出现故障时,自动切换到下一个节点来提供访问 注释: 注释: proxy_cache : 引用前面定义的缓存区 my-cache。 $upstream_cache_status这个变量来显示缓存的状态,我们可以在配置中添加一个 http 头来显示这一状态,
Nginx(“engine x”)是一款是由俄罗斯的程序设计师Igor Sysoev所开发高性能的 Web和 反向代理 服务器,也是一个 IMAP/POP3/SMTP 代理服务器。
在高连接并发的情况下,Nginx是Apache服务器不错的替代品。一、yum安装nginx
1、添加nginx到yum源
[root@nginx-lb ~]# vim /etc/yum.repos.d/nginx.repo [nginx-stable] name=nginx stable repo baseurl=https://nginx.org/packages/centos/$releasever/$basearch/ gpgcheck=0 enabled=1 gpgkey=https://nginx.org/keys/nginx_signing.key module_hotfixes=true
2、安装nginx
[root@nginx-lb ~]# yum -y install nginx
3、启动nginx
[root@nginx-lb ~]# systemctl start nginx [root@nginx-lb ~]# systemctl enable nginx Created symlink from /etc/systemd/system/multi-user.target.wants/nginx.service to /usr/lib/systemd/system/nginx.service. [root@nginx-lb ~]# systemctl status nginx ● nginx.service - nginx - high performance web server Loaded: loaded (/usr/lib/systemd/system/nginx.service; enabled; vendor preset: disabled) Active: active (running) since Mon 2020-06-15 19:37:34 CST; 1h 21min ago Docs: https://nginx.org/en/docs/ Main PID: 7280 (nginx) CGroup: /system.slice/nginx.service ├─7280 nginx: master process /usr/sbin/nginx -c /etc/nginx/nginx.conf └─7281 nginx: worker process Jun 15 19:37:34 localhost.localdomain systemd[1]: Starting nginx - high performance web server... Jun 15 19:37:34 localhost.localdomain systemd[1]: Started nginx - high performance web server. [root@nginx-lb ~]# netstat -anpt | grep nginx tcp 0 0 0.0.0.0:80 0.0.0.0:* LISTEN 7280/nginx: master
4、修改节点的默认首页
[root@nginx-lb ~]# echo "<h1>nginx-web11111111</h1>" > /usr/share/nginx/html/index.html
二、源码安装nginx
1、安装前提软件环境
[root@nginx-lb ~]# yum -y install gcc gcc-c++ make libtool zlib zlib-devel pcre pcre-devel openssl openssl-devel
2、复制nginx和缓存包到/usr/src/,解压
[root@nginx-lb ~]# useradd -s /sbin/nologin nginx [root@nginx-lb ~]# cd /usr/src [root@nginx-lb ~]# ls debug nginx-1.12.0.tar.gz kernels ngx_cache_purge-2.3.tar.gz nginx-goodies-nginx-sticky-module-ng-08a395c66e42.tar.gz [root@nginx-lb ~]# tar zxf nginx-goodies-nginx-sticky-module-ng-08a395c66e42.tar.gz [root@nginx-lb ~]# tar zxf ngx_cache_purge-2.3.tar.gz [root@nginx-lb ~]# tar zxf nginx-1.12.0.tar.gz
3、编译安装nginx
[root@nginx-lb ~]# cd /usr/src/nginx-1.12.0 [root@nginx-lb ~]# ./configure --prefix=/usr/local/nginx --user=nginx --group=nginx --with-http_stub_status_module --with-http_realip_module --with-http_ssl_module --with-http_gzip_static_module --http-client-body-temp-path=/var/tmp/nginx/client --http-proxy-temp-path=/var/tmp/nginx/proxy --http-fastcgi-temp-path=/var/tmp/nginx/fcgi --with-pcre --add-module=../ngx_cache_purge-2.3 --with-http_flv_module --add-module=../nginx-goodies-nginx-sticky-module-ng-08a395c66e42 &&make&&make install
4、添加nginx系统服务并启动
[root@nginx-lb ~]# ln -s /usr/local/nginx/sbin/nginx /usr/local/sbin/ [root@nginx-lb ~]# mkdir -p /var/tmp/nginx/client [root@nginx-lb ~]# chown -R nginx:nginx /var/tmp/nginx [root@nginx-lb ~]# vim /etc/init.d/nginx #!/bin/bash # chkconfig: 2345 99 20 # description: Nginx Service Control Script PROG="/usr/local/nginx/sbin/nginx" PIDF="/usr/local/nginx/logs/nginx.pid" case "$1" in start) netstat -anplt |grep ":80" &> /dev/null && pgrep "nginx" &> /dev/null if [ $? -eq 0 ] then echo "Nginx service already running." else $PROG -t &> /dev/null if [ $? -eq 0 ] ; then $PROG echo "Nginx service start success." else $PROG -t fi fi ;; stop) netstat -anplt |grep ":80" &> /dev/null && pgrep "nginx" &> /dev/null if [ $? -eq 0 ] then kill -s QUIT $(cat $PIDF) echo "Nginx service stop success." else echo "Nginx service already stop" fi ;; restart) $0 stop $0 start ;; status) netstat -anplt |grep ":80" &> /dev/null && pgrep "nginx" &> /dev/null if [ $? -eq 0 ] then echo "Nginx service is running." else echo "Nginx is stop." fi ;; reload) netstat -anplt |grep ":80" &> /dev/null && pgrep "nginx" &> /dev/null if [ $? -eq 0 ] then $PROG -t &> /dev/null if [ $? -eq 0 ] ; then kill -s HUP $(cat $PIDF) echo "reload Nginx config success." else $PROG -t fi else echo "Nginx service is not run." fi ;; *) echo "Usage: $0 {start|stop|restart|reload}" exit 1 esac [root@nginx-lb ~]# chmod +x /etc/init.d/nginx [root@nginx-lb ~]# chkconfig --add nginx [root@nginx-lb ~]# chkconfig nginx on [root@nginx-lb ~]# systemctl start nginx
5、查看版本
[root@nginx-lb ~]# nginx -v nginx version: nginx/1.12.0
[root@nginx-lb ~]# nginx -V nginx version: nginx/1.12.0 built by gcc 4.8.5 20150623 (Red Hat 4.8.5-39) (GCC) built with OpenSSL 1.0.2k-fips 26 Jan 2017 TLS SNI support enabled configure arguments: --prefix=/usr/local/nginx --user=nginx --group=nginx --with-http_stub_status_module --with-http_realip_module --with-http_ssl_module --with-http_gzip_static_module --http-client-body-temp-path=/var/tmp/nginx/client --http-proxy-temp-path=/var/tmp/nginx/proxy --http-fastcgi-temp-path=/var/tmp/nginx/fcgi --with-pcre --add-module=../ngx_cache_purge-2.3 --with-http_flv_module --add-module=../nginx-goodies-nginx-sticky-module-ng-08a395c66e42
三、基础配置
1、负载均衡与健康检查
http { include mime.types; default_type application/octet-stream; upstream backend { sticky; server 192.168.1.11:80 weight=1 max_fails=2 fail_timeout=10s; server 192.168.1.138:80 weight=1 max_fails=2 fail_timeout=10s; } …… }
weight : 轮询权值也是可以用在 ip_hash 的,默认值为 1
max_fails : 允许请求失败的次数,默认为 1。当超过最大次数时,返回 proxy_next_upstream模块定义的错误。
fail_timeout : 有两层含义,一是在 10s 时间内最多容许 2 次失败;二是在经历了 2 次失败以后, 10s 时间内不分配请求到这台服务器。server { …… location / { root html; index index.html index.htm; proxy_pass https://backend; } …… }
2、追踪客户端呢原始ip
server { …… location / { root html; index index.html index.htm; proxy_pass https://backend; proxy_redirect off; #追踪客户端呢原始ip是否开启 proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_next_upstream error timeout invalid_header http_500 http_502 http_503 http_504; } …… }
3、启用nginx缓存
http { …… #access_log logs/access.log main; proxy_buffering on; proxy_temp_path /usr/local/nginx/proxy_temp; # proxy_cache_path /usr/local/nginx/proxy_cache levels=1:2 keys_zone=my-cache:100m inactive=600m max_size=2g; …… }
server { …… location / { …… proxy_next_upstream error timeout invalid_header http_500 http_502 http_503 http_504; proxy_cache my-cache; proxy_cache_valid 200 304 301 302 8h; proxy_cache_valid 404 1m; proxy_cache_valid any 1d; proxy_cache_key $host$uri$is_args$args; expires 30d; } …… }
proxy_buffering on; 代理的时候,开启或关闭缓冲后端服务器的响应。当开启缓冲时, nginx 尽可能快地从被代理的服务器接收响应,再将它存入缓冲区中。
proxy_temp_path : 缓存临时目录。后端的响应并不直接返回客户端,而是先写到一个临时文件中,然后被 rename 一下当做缓存放在 proxy_cache_path 。 0.8.9 版本以后允许 temp和 cache 两个目录在不同文件系统上(分区),然而为了减少性能损失还是建议把它们设成一个文件系统上。
proxy_cache_path: 设置缓存目录,目录里的文件名是 cache_key 的 MD5 值。
levels=1:2 keys_zone=my-cache:50m 表示采用 2 级目录结构, 第一层目录只有一个字符,是由 levels=1:2 设置,总共二层目录,子目录名字由二个字符组成。Web 缓存区名称为 my-cache,内存缓存空间大小为 100MB,这个缓冲 zone 可以被多次使用。文件系统上看到的缓存文件名类似于 /usr/local/nginx1.10/proxy_cache/c/29/b7f54b2df7773722d382f4809d65029c 。
inactive=600 max_size=2g 表示 600 分钟没有被访问的内容自动清除,硬盘最大缓存空间为2GB,超过这个大学将清除最近最少使用的数据。
proxy_cache_valid : 为不同的响应状态码设置不同的缓存时间,比如 200、 302 等正常结果可以缓存的时间长点,而 404、 500 等缓存时间设置短一些,这个时间到了文件就会过期,而不论是否刚被访问过。
proxy_cache_key : 定义如何生成缓存的键, 设置 web 缓存的 key 值, nginx 根据 key 值 md5哈希存储缓存
$upstream_cache_status 包含以下几种状态:
·MISS 未命中,请求被传送到后端
·HIT 缓存命中
·EXPIRED 缓存已经过期请求被传送到后端
·UPDATING 正在更新缓存,将使用旧的应答
·STALE 后端将得到过期的应答expires : 在响应头里设置 Expires:或 Cache-Control:max-age,返回给客户端的浏览器缓存失效时间。
本网页所有视频内容由 imoviebox边看边下-网页视频下载, iurlBox网页地址收藏管理器 下载并得到。
ImovieBox网页视频下载器 下载地址: ImovieBox网页视频下载器-最新版本下载
本文章由: imapbox邮箱云存储,邮箱网盘,ImageBox 图片批量下载器,网页图片批量下载专家,网页图片批量下载器,获取到文章图片,imoviebox网页视频批量下载器,下载视频内容,为您提供.
阅读和此文章类似的: 全球云计算