nginx反向代理配置及常見指令


nginx.conf默認的server配置:html

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上。nginx

server {
    listen        9999;
    server_name    localhost;
    location /ent-boot/ {
        proxy_pass http://192.168.40.84:8802/ent-boot/;
    }
    
    location / {
        root    /www/back/;
        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 時,session

  1. proxy_pass: http://127.0.0.1:9999/; #則,代理到URL: → http://127.0.0.1:9999/a.html
  2. proxy_pass: http://127.0.0.1:9999; #則,代理到URL: → http://127.0.0.1:9999/news/a.html
  3. proxy_pass: http://127.0.0.1:9999/article/; #則,代理到URL: → http://127.0.0.1:9999/p/a.html
  4. 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指令。url

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僅保存在本身節點裏的站點。spa

參考:Nginx的upstream反向代理、負載均衡詳解 https://www.cnblogs.com/hoaprox/p/10132409.html
nginx負載均衡的策略有輪詢、權重輪詢、ip_hash、url_hash等。參考:nginx配置-upstream https://www.jianshu.com/p/ab7cf5484e8f.net

相關文章
相關標籤/搜索