Nginx 代理配置、負載均衡配置、websocket配置

location 末尾是否加 / 的區別

location /proxy { #末尾無'/'
	proxy_pass http://127.0.0.1:8080/;
}

匹配以 /proxy 開頭的路徑。 eg: /proxyaaa、/proxy/xxx/yyy、/proxy-xxx

  • 訪問 localhost:80/proxyaaa,代理到 127.0.0.1:8080/aaa
  • 訪問 localhost:80/proxy/aaa,代理到 127.0.0.1:8080//aaa (兩個 ‘//’)
location /proxy/ { #末尾有'/'
	proxy_pass http://127.0.0.1:8080/;
}

匹配以 /proxy/ 開頭的路徑。 eg: /proxy/aaa、/proxy/bbb、/proxy/aaa/bbb

  • 訪問 localhost:80/proxy/aaa,代理到 127.0.0.1:8080/aaa

proxy_pass 末尾是否加 / 的區別

location /proxy/ {
	proxy_pass http://127.0.0.1:8080/;  #末尾有'/'
}

proxy_pass 地址末尾加 / ,則代理路徑將不包含location匹配的部分

  • 訪問 localhost:80/proxy/index.html 時,代理到 127.0.0.1:8080/index.html
location /proxy/ {
	proxy_pass http://127.0.0.1:8080;  #末尾無'/'
}

proxy_pass 地址末尾不加 / ,則代理路徑將包含location匹配的部分

  • 訪問 localhost:80/proxy/index.html 時,代理到 127.0.0.1:8080/proxy/index.html

另外:通過 rewrite 配置實現末尾不加 / 和 加 / 的代理路徑一致

location /proxy/ {
	proxy_pass http://127.0.0.1:8080;  #末尾無'/'
	rewrite '^/proxy(.*)$' $1 break;
}
  • 訪問 localhost:80/proxy/index.html 時,代理到 127.0.0.1:8080/index.html

多節點負載均衡 upstream

多節點負載均衡配置,默認是輪訓策略。Nginx 負載均衡策略

upstream backend-server {
    server 127.0.0.1:8080;
    server 127.0.0.1:8081;
}
server {
    location /backend {
        proxy_pass http://backend-server;
    }
}

WebSocket 配置

location /chat/ {
    proxy_pass http://backend;
    proxy_http_version 1.1;
    proxy_set_header Upgrade $http_upgrade;
    proxy_set_header Connection "upgrade";
}

reference:
http://nginx.org/en/docs/http/ngx_http_proxy_module.html#proxy_pass
nginx upstream 模塊
nginx websocket 配置
nginx 變量索引


end

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章