以下1-3步骤都是在nginx均衡负载lb01机器操作: 1、下载 mkdir -p /server/tools cd /server/tools wget http://nginx.org/download/nginx-1.18.0.tar.gz (从其他机器拷贝过来:scp nginx-1.18.0.tar.gz 172.16.1.5:/server/tools)
2、安装依赖 yum install pcre pcre-devel -y yum install openssl openssl-devel -y #https加密。
3、编译安装步骤 useradd -u1111 -s /sbin/nologin nginx -M id nginx tar xf nginx-1.18.0.tar.gz cd nginx-1.18.0/ ./configure --user=nginx --group=nginx --prefix=/application/nginx-1.18.0/ --with-http_stub_status_module --with-http_ssl_module --with-pcre make&&make install ln -s /application/nginx-1.18.0/ /application/nginx /application/nginx/sbin/nginx netstat -lntup|grep nginx
1、lb01配置nginx.conf 官方例子upstream backend
[root@lb01 /application/nginx/conf]#vim nginx.conf worker_processes 1; events { worker_connections 1024; } http { include mime.types; default_type application/octet-stream; sendfile on; keepalive_timeout 65; upstream backend { server 10.0.0.7:80 weight=1; server 10.0.0.8:80 weight=1; #此处1:1可以改;按1:1的方式给7,8分配请求 } server { listen 80; server_name www.etiantian.org; location / { proxy_pass http://backend; proxy_set_header Host $host; } } server { listen 80; server_name blog.etiantian.org; location / { proxy_pass http://backend; proxy_set_header Host $host; } } } 默认情况浏览器请求负载均衡器,会携带host字段,但是Nginx代理向后请求节点 默认在请求头里不带host字段。 配置Nginx代理向后请求节点默认在请求头里带host字段配置参数: proxy_set_header Host $host;2、lb01配置hosts文件
[root@lb01 /application/nginx/conf]#vim /etc/hosts 127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4 ::1 localhost localhost.localdomain localhost6 localhost6.localdomain6 172.16.1.5 lb01 172.16.1.6 lb02 172.16.1.7 web01 172.16.1.8 web02 172.16.1.9 web03 172.16.1.31 nfs01 172.16.1.41 backup 172.16.1.51 db01 db0l.etiantian.org 172.16.1.61 m01 10.0.0.5 www.etiantian.org blog.etiantian3、web配置 1)web01:
[root@web01 /application/nginx/conf/extra]#cat 01_www.conf server { listen 80; server_name www.etiantian.org; location / { root html/www; index index.html index.htm; } } [root@web01 /application/nginx/html/www]#cat index.html www72)web02:
[root@web02 /application/nginx/conf/extra]# cat 01_www.conf server { listen 80; server_name etiantian.org; rewrite ^/(.*) http://www.etiantian.org/$1 permanent; } server { listen 80; server_name www.etiantian.org; location / { root html/www; index index.html index.htm; } autoindex on; access_log logs/access_www.log main; } [root@web02 /application/nginx/conf/extra]# cat ../../html/www/index.html www8PS:修改配置之后检查语法,重新加载
1、虚拟机测试
[root@lb01 /application/nginx/conf]#curl www.etiantian.org www7 [root@lb01 /application/nginx/conf]#curl www.etiantian.org www8 [root@lb01 /application/nginx/conf]#curl www.etiantian.org www7 [root@lb01 /application/nginx/conf]#curl www.etiantian.org www8 [root@lb01 /application/nginx/conf]#for n in {1..100};do curl www.etiantian.org;sleep 1;done www7 www8 www7 www8 ....................测试成功2、浏览器测试 我的是win10 在C:\Windows\System32\drivers\etc目录下找到hosts文件 在文件末尾加入10.0.0.5 www.etiantian.org,保存 浏览器输入www.etiantian.org,回车,不断刷新页面,发现www7与www8轮流显示。
增加proxy_set_header X-Forwarded-For $remote_addr; #<==这是反向代理时,节点服务器获取用户真实IP的必要功能配置。 在反向代理请求后端节点服务器的请求头中增加获取的客户端IP的字段信息,然后节点后端可以通过程序或者相关的配置接收X-Forwarded-For传过来的用户真实IP的信息。
[root@lb01 /application/nginx/conf]#vim /application/nginx/conf/nginx.conf events { worker_connections 1024; } http { include mime.types; default_type application/octet-stream; sendfile on; keepalive_timeout 65; upstream backend { server 10.0.0.7:80 weight=1; server 10.0.0.8:80 weight=1; } server { listen 80; server_name www.etiantian.org; location / { proxy_pass http://backend; proxy_set_header Host $host; proxy_set_header X-Forwarded-For $remote_addr; } } }浏览器输入www.etiantian.org访问,web02的日志就会看到VMware8的ip
扩展: server 10.0.0.8:80 weight=1 backup;#backup参数相当于负载均衡高可用了,做备份。
更多参数 由于参数众 多,最好把这些参数放到一个配置文件里,然后用include方式包含到虚拟主机配置里, 效果如下:
[root@lb01 /application/nginx/conf]#vim /application/nginx/conf/nginx.conf events { worker_connections 1024; } http { include mime.types; default_type application/octet-stream; sendfile on; keepalive_timeout 65; upstream backend { server 10.0.0.7:80 weight=1; server 10.0.0.8:80 weight=1; } server { listen 80; server_name www.etiantian.org; location / { proxy_pass http://backend; include proxy.conf; } } } [root@lb01 /application/nginx/conf]# cat proxy.conf proxy_set_header Host $host; proxy_set_header X-Forwarded-For $remote_addr; proxy_connect_timeout 60; proxy_send_timeout 60; proxy_read_timeout 60; proxy_buffer_size 4k; proxy_buffers 4 32k; proxy_busy_buffers_size 64k; proxy_temp_file_write_size 64k;proxy_connect_timeout 60; 定义与代理服务器建立连接的超时。请注意,此超时通常不能超过75秒。 proxy_send_timeout 60; 设置将请求传输到代理服务器的超时。超时仅在两个连续的写操作之间设置,而不用于整个请求的传输。如果代理服务器在此时间内未收到任何信息,则连接将关闭。 proxy_read_timeout 60; 定义用于从代理服务器读取响应的超时。超时仅在两次连续的读取操作之间设置,而不用于传输整个响应。如果代理服务器在此时间内未传输任何内容,则连接将关闭。 proxy_buffer_size 4k; 设置size用于读取从代理服务器接收到的响应的第一部分的缓冲区的。这部分通常包含一个小的响应头。默认情况下,缓冲区大小等于一个内存页。根据平台的不同,它可以是4K或8K。但是,它可以做得更小。 proxy_buffers 4 32k; 为单个连接设置用于从代理服务器读取响应的缓冲区的number和size。默认情况下,缓冲区大小等于一个内存页。根据平台的不同,它可以是4K或8K。 proxy_busy_buffers_size 64k; 当缓冲启用从代理的服务器响应,限制总size的缓冲区,可以是正忙于发送到客户端的响应,而响应尚不充分阅读的。同时,其余的缓冲区可用于读取响应,并在需要时将响应的一部分缓冲到临时文件中。默认情况下,size受限于proxy_buffer_size和proxy_buffers指令设置的两个缓冲区的大小 。 proxy_temp_file_write_size 64k; size当启用了从代理服务器到临时文件的响应的缓冲时,一次 限制写入临时文件的数据的数量。默认情况下,size受proxy_buffer_size和proxy_buffers指令设置的两个缓冲区的限制 。临时文件的最大大小由proxy_max_temp_file_size指令设置 。