nginx反向代理配置

最近在項目中使用nginx反向代理,根據不一樣的請求路徑,將請求分發到不一樣服務。下面的示例主要完成以下功能html

  • /prod/路徑的請求分發到prod服務
  • /test/路徑的請求分發到test服務

建立文件夾:/root/web/prod,/root/web/test;分別上傳一個index.html文件,文件內容分別爲:prod, test。nginx

配置反向代理

修改/usr/local/nginx/conf/nginx.conf文件,在http節點下新增以下兩個節點:web

 1     //模擬prod服務
 2    server {
 3         listen 8081;
 4         server_name localhost;
 5 
 6         location / {
 7                 root /root/web/prod;
 8         }
 9     }
10 
11     //模擬test服務
12       server {
13         listen 8082;
14         server_name localhost;
15 
16         location / {
17                 root /root/web/test;
18         }
19     }

nginx反向代理主要使用指令「proxy_pass」,反向代理服務節點配置以下,瀏覽器

 1 server {
 2         listen       80;
 3         server_name  localhost;
 4 
 5         location / {
 6             root   html;
 7             index  index.html index.htm;
 8         }
 9 
10         location /prod/ {
11                  proxy_pass http://localhost:8081/;
12         }
13 
14         location /test/ {
15                 proxy_pass http://localhost:8082/;
16         }
17     }

保存修改後的配置文件,從新加載nginx.conf文件url

1 /usr/local/nginx/sbin/nginx -s reload;

在瀏覽器中訪問:http://ip/prod, htpp://ip/test, 分別顯示prod, test字符串。spa

proxy_pass根據path路徑轉發時的"/"問題記錄

在nginx中配置proxy_pass時,若是是按照^~匹配路徑時,要注意proxy_pass後的url最後的/。當加上了/,至關因而絕對根路徑,則nginx不會把location中匹配的路徑部分代理走;若是沒有/,則會把匹配的路徑部分也給代理走代理

1    location /prod/ {
2         proxy_pass http://localhost:8081/;
3     }

如上面的配置,若是請求的url是http://ip/prod/1.jpg會被代理成http://localhost:8081/1.jpgcode

    location /prod/ {
        proxy_pass http://localhost:8081;
    }

如上面的配置,若是請求的url是http://ip/prod/1.jpg會被代理成http://localhost:8081/prod/1.jpgserver

在使用proxy_pass進行反向代理配置時,必定要多注意是否須要加"/",該問題已經犯了不少次了,切忌,特別感謝以下參考的文章:proxy_pass根據path路徑轉發時的"/"問題記錄htm

參考文章

proxy_pass根據path路徑轉發時的"/"問題記錄

相關文章
相關標籤/搜索