nginx配置文件: /usr/local/nginx1.16.1/conf/nginx.conf
nginx.conf默認的server配置:
server{ listen 80; server_name localhost; location / { root html; index index.html index.htm; } error_page 500 502 503 504 /50x.html; }
配置location時,優先配置子目錄,最后是默認根目錄。比如下面,先配置/ent-boot/,這樣,如果用戶的請求地址是/ent-boot/這個路徑,nginx當掃描到這個/ent-boot/后,就直接做轉發不再繼續掃描配置了。
其中,proxy_pass:表示代理轉發,將請求轉發到指定的url上。
server { listen 9999; server_name localhost; location /ent-boot/ { proxy_pass http://192.168.40.84:8802/ent-boot/; } location / { root /www/front/; index index.html index.htm; } }
proxy_pass指令用於設置被代理服務器的地址。可以是主機名稱、IP地址加端口號的形式。
例如如下配置:
server { listen 80; server_name buguge.com www.buguge.com; location /proxy/ { proxy_pass ***; } }
當訪問 http://buguge.com/news/a.html 時,
- proxy_pass: http://127.0.0.1:9999/; #則,代理到URL: → http://127.0.0.1:9999/a.html
- proxy_pass: http://127.0.0.1:9999; #則,代理到URL: → http://127.0.0.1:9999/news/a.html
- proxy_pass: http://127.0.0.1:9999/article/; #則,代理到URL: → http://127.0.0.1:9999/p/a.html
- proxy_pass: http://127.0.0.1:9999/article; #則,代理到URL: → http://127.0.0.1:9999/articlea.html
為了方便記憶和規范配置,建議所有的 proxy_pass 后的url都以“/”結尾。參考:https://www.cnblogs.com/yyxianren/p/10831511.html
如果反向代理到別的域名的網站上,要指定請求頭的Host的值為那個域名,否則會導致代理出現死循環。參考:https://blog.csdn.net/bowei026/article/details/90417914
要實現負載均衡,要使用upstream指令。
upstream emei_server { ip_hash; server 10.0.2.75:9083 weight=10 max_fails=0; server 10.0.2.76:9083 weight=10 max_fails=0; } server{ ... location / { proxy_pass http://emei_server; proxy_set_header Host $host; proxy_set_header REMOTE-HOST $remote_addr; proxy_set_header X-Real-IP $remote_addr; proxy_set_header remote-addr $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; client_max_body_size 100m; client_body_buffer_size 512k; proxy_connect_timeout 300; proxy_send_timeout 300; proxy_read_timeout 300; proxy_buffers 4 256k; proxy_buffer_size 256k; proxy_next_upstream error timeout invalid_header http_500 http_502 http_503 http_504 http_404; proxy_busy_buffers_size 256k; } }
ip_hash:可以確保訪問一個被同一台服務器處理, 除非分配的server宕機。 如果宕機 則請求被發往其他的機器。適用於需要登錄並且session僅保存在自己節點里的站點。
參考:Nginx的upstream反向代理、負載均衡詳解 https://www.cnblogs.com/hoaprox/p/10132409.html
nginx負載均衡的策略有輪詢、權重輪詢、ip_hash、url_hash等。參考:nginx配置-upstream https://www.jianshu.com/p/ab7cf5484e8f