nginx 反向代理
nginx 七层负载
在nginx.conf主配置文件中添加:
include /usr/local/nginx/conf.d/*.conf;
编辑conf.d下的配置文件:
1 [root@nginx conf]# cat ../conf.d/vhost.conf 2 upstream tomcat { 3 server X.X.X.X:443 weight=100; 4 } 5 upstream raptor_tomcat { 6 server X.X.X.X:8081 weight=100; 7 }
一)https反向代理
1 server { 2 listen 8443 ssl; 3 server_name *.example.cn; 4 root html; 5 ssl on; 6 ssl_certificate /usr/local/nginx/certs/example.crt; 7 ssl_certificate_key /usr/local/nginx/certs/example.cn.key; 8 ssl_session_cache shared:SSL:20m; 9 ssl_session_timeout 20m; 10 ssl_protocols TLSv1 TLSv1.1 TLSv1.2; 11 access_log /var/log/nginx/example_https.log; 12 location / { 13 proxy_http_version 1.1; 14 proxy_set_header Connection ""; 15 proxy_pass http://raptor_tomcat; 16 #Proxy Settings 17 proxy_redirect off; 18 proxy_set_header Host $host; 19 proxy_set_header X-Real-IP $remote_addr; 20 proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; 21 proxy_next_upstream error timeout invalid_header http_500 http_502 http_503 http_504; 22 proxy_max_temp_file_size 0; 23 proxy_ignore_client_abort on; 24 proxy_connect_timeout 90; 25 proxy_send_timeout 90; 26 proxy_read_timeout 90; 27 proxy_buffer_size 4k; 28 proxy_buffers 4 32k; 29 proxy_busy_buffers_size 64k; 30 proxy_temp_file_write_size 64k; 31 } 32 }
##如果后端代理的同样是一个https的服务,则需要把红色位置改成 proxy_pass https://tomcat; 一个大坑,特别需要留意是使用https。
二)http代理:
[root@nginx conf]# cat ../conf.d/http.conf server { listen 18001; access_log /var/log/nginx/example_http.log; location /status { stub_status on; access_log off; allow 127.0.0.1; allow 10.0.17.27; allow 10.0.1.142; deny all; } location / { proxy_http_version 1.1; proxy_set_header Connection ""; proxy_pass https://tomcat; #Proxy Settings proxy_redirect off; 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_set_header X-Forwarded-For $http_x_forwarded_for; proxy_next_upstream error timeout invalid_header http_500 http_502 http_503 http_504; proxy_ignore_client_abort on; proxy_max_temp_file_size 0; proxy_connect_timeout 90; proxy_send_timeout 90; proxy_read_timeout 90; proxy_buffer_size 4k; proxy_buffers 4 32k; proxy_busy_buffers_size 64k; proxy_temp_file_write_size 64k; } }
nginx 四层负载
nginx自nginx-1.9以后支持七层负载均衡的同时也兼备了四层负载均衡,但是需要加入--with-stream模块
如果一开始没有编译到nginx中,可以使用nginx -V来查看当时的编译参数,例如:
[root@nginx sbin]# ./nginx -V nginx version: nginx/1.14.0 built by gcc 4.4.7 20120313 (Red Hat 4.4.7-23) (GCC) built with OpenSSL 1.0.1e-fips 11 Feb 2013 TLS SNI support enabled configure arguments: --prefix=/usr/local/nginx --error-log-path=/var/log/nginx/error.log --http-log-path=/var/log/nginx/access.log --lo ck-path=/var/lock/nginx.lock --user=nginx --group=nginx --with-http_ssl_module --with-http_flv_module --with-http_stub_status_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 --http-uwsgi-temp-path=/var/tmp/nginx/uwsgi --http-scgi-temp-path=/var/tmp/nginx/scgi --with-pcre --with-file-aio --with-http_secure_link_module
只需要在后面添加--with-stream 然后make 不用make install 不然就会覆盖之前的
配置负载均衡:
1 stream { 2 upstream zifangsky { 3 hash $remote_addr consistent; 4 server X.X.X.X:8080; 5 } 6 server { 7 listen 8080; 8 proxy_connect_timeout 5s; 9 proxy_timeout 5s; 10 proxy_pass zifangsky; 11 } 12 }
##千万记住不要配置到http里面,网上一些博客写的都是配置到了http里面,巨坑!!!
四层tcp代理到https
stream { upstream zifangsky { hash $remote_addr consistent; server X.X.X.X:8080; } server { listen 8080 ssl; proxy_connect_timeout 5s; proxy_timeout 5s; proxy_pass zifangsky; }
需要添加stream的ssl模块 --with-stream_ssl_module