亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

nginx代理去掉URL前綴的實(shí)現(xiàn)方法

 更新時間:2023年05月29日 11:19:33   作者:杰哥的技術(shù)雜貨鋪  
nginx作為一款廣泛使用的反向代理服務(wù)器,在實(shí)際應(yīng)用中,經(jīng)常需要去掉代理請求中的前綴,下面這篇文章主要給大家介紹了關(guān)于nginx代理去掉URL前綴的實(shí)現(xiàn)方法,文中通過實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下

今天接到一個配置nginx的需求是:需要訪問某個域名時,nginx可以去掉前綴去代理訪問到后端

正常配置情況下:

在nginx配置文件中中設(shè)置了 location /prod-api/api 時 瀏覽器訪問 /prod-api/api 反向代理到后端服務(wù)后,后端服務(wù)接收到的url地址實(shí)際還是 /prod-api/api

需要實(shí)現(xiàn)的功能需求:

訪問url路徑/prod-api/api經(jīng)過nginx反向代理后,到達(dá)后端服務(wù)的實(shí)際url地址為/api

以下是原nginx配置文件中l(wèi)ocation部分的配置內(nèi)容:

server {
        listen 80;
        server_name localhost;
        charset utf-8;
        location / {
        root /usr/share/nginx/html/cashier;
        try_files $uri $uri/ /index.html;
        index index.html index.htm;
    }
    location /prod-api/ {
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header REMOTE-HOST $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-NginX-Proxy true;
        proxy_pass http://127.0.0.1:9076;
    }
       access_log /var/log/nginx/access.log main;
       error_log /var/log/nginx/error.log warn;
}

將上述代碼修改為如下nginx location代碼:

server {
        listen 80;
        server_name localhost;
        charset utf-8;
        location / {
        root /usr/share/nginx/html/cashier;
        try_files $uri $uri/ /index.html;
        index index.html index.htm;
    }
    location ^~/prod-api/ {
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header REMOTE-HOST $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-NginX-Proxy true;
        proxy_pass http://127.0.0.1:9076/;
    }
       access_log /var/log/nginx/access.log main;
       error_log /var/log/nginx/error.log warn;
}

注意點(diǎn):

  • 在proxy_pass 反向代理地址最后加一個/
  • 在location匹配的url路徑前添加^~/

location ^~/prod-api/:匹配任何以 /prod-api/ 開頭的地址,匹配符合以后,停止往下搜索正則,采用這一條

  • 不可以使用:proxy_set_header Host $http_host;

我在現(xiàn)有環(huán)境的nginx里添加這段配置之后,訪問會轉(zhuǎn)不過去,查看nginx日志也只能看到是404信息,并沒有更多定位問題的信息。檢查了許久也沒找到原因,于是注釋掉location 里面所有配置,里面只加proxy_pass這段配置,結(jié)果nginx是能夠轉(zhuǎn)發(fā)成功的,這說明單獨(dú)來看這條location的配置是沒有問題的,很有可能是現(xiàn)有環(huán)境nginx里的某些配置影響到了這個轉(zhuǎn)發(fā)。

為了定位問題原因,location下的配置逐個注釋來定位問題,最后發(fā)現(xiàn)當(dāng)注釋掉proxy_set_header Host $http_host ;這條配置之后,就能成功轉(zhuǎn)發(fā)了。這才注意到是反向代理配置的問題。

此配置的作用是:把原h(huán)ttp請求的Header中的Host字段也放到轉(zhuǎn)發(fā)的請求里。
如果不加這一行的話,nginx轉(zhuǎn)發(fā)的請求header里就不會有Host字段,而服務(wù)器是靠這個Host值來區(qū)分你請求的是哪個域名的資源的。

但是現(xiàn)有環(huán)境中原有的配置也不能隨便刪掉,所以可以進(jìn)行如下設(shè)置:

即,在location里面添加一條 proxy_set_header Host $proxy_host;配置。

設(shè)置 proxy_set_header Host $host 時,瀏覽器直接訪問 nginx,獲取到的 Host 是 $host 的值,沒有端口信息。此時代碼中如果有重定向路由,那么重定向時就會丟失端口信息,導(dǎo)致 404

補(bǔ)充知識:Nginx 轉(zhuǎn)發(fā)時去掉前綴保留傳參

最終效果

Nginx 將

127.0.0.1:8082/proxy/switchSystemRole?roleId=29

轉(zhuǎn)發(fā)至

127.0.0.1:9301/switchSystemRole?roleId=29

server {
    listen 8082;
    server_name 127.0.0.1;
    location /proxy/ {
        proxy_pass http://127.0.0.1:9301/;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    }
}

總結(jié)

到此這篇關(guān)于nginx代理去掉URL前綴的實(shí)現(xiàn)方法的文章就介紹到這了,更多相關(guān)nginx代理去掉URL前綴內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Nginx代理后HTTP頭部丟失問題的解決方案

    Nginx代理后HTTP頭部丟失問題的解決方案

    在日常開發(fā)和運(yùn)維中,我們經(jīng)常會使用 Nginx 作為反向代理服務(wù)器,將客戶端的請求轉(zhuǎn)發(fā)到后端服務(wù),然而,在某些情況下,通過 Nginx 代理后,后端服務(wù)可能會丟失部分 HTTP 頭部信息,所以本文給大家介紹了Nginx代理后HTTP頭部丟失問題的解決方案,需要的朋友可以參考下
    2025-02-02
  • Ansible批量部署Nginx的示例代碼

    Ansible批量部署Nginx的示例代碼

    這篇文章主要介紹了Ansible批量部署Nginx的示例代碼,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2018-10-10
  • 給小白的 Nginx 30分鐘入門指南(小結(jié))

    給小白的 Nginx 30分鐘入門指南(小結(jié))

    這篇文章主要介紹了給小白的 Nginx 30分鐘入門指南(小結(jié)),小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2018-02-02
  • Prometheus監(jiān)控實(shí)戰(zhàn)篇Nginx、Hbase操作詳解

    Prometheus監(jiān)控實(shí)戰(zhàn)篇Nginx、Hbase操作詳解

    這篇文章主要介紹了Prometheus監(jiān)控實(shí)戰(zhàn)篇Nginx、Hbase,本文通過圖文并茂的形式給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2022-02-02
  • nginx中g(shù)zip壓縮提升網(wǎng)站速度的實(shí)現(xiàn)方法

    nginx中g(shù)zip壓縮提升網(wǎng)站速度的實(shí)現(xiàn)方法

    這篇文章主要介紹了nginx中g(shù)zip壓縮提升網(wǎng)站速度的實(shí)現(xiàn)方法,非常不錯,具有一定的參考借鑒價值,需要的朋友可以參考下
    2019-08-08
  • nginx實(shí)現(xiàn)動靜分離的案例詳解

    nginx實(shí)現(xiàn)動靜分離的案例詳解

    nginx 和 Tomcat 是兩個不同的服務(wù)器軟件,在分離部署方面有著各自的優(yōu)勢和適用場景,一般來說,Nginx 適合作為反向代理和負(fù)載均衡服務(wù)器,用于處理靜態(tài)文件和高并發(fā)請求,本文將大家介紹一下nginx實(shí)現(xiàn)動靜分離的案例,需要的朋友可以參考下
    2023-08-08
  • Nginx URL重寫rewrite機(jī)制原理及使用實(shí)例

    Nginx URL重寫rewrite機(jī)制原理及使用實(shí)例

    這篇文章主要介紹了Nginx URL重寫(rewrite)機(jī)制原理及使用實(shí)例,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2020-08-08
  • 詳解Nginx HTTP負(fù)載均衡和反向代理配置

    詳解Nginx HTTP負(fù)載均衡和反向代理配置

    這篇文章主要介紹了詳解Nginx HTTP負(fù)載均衡和反向代理配置,有需要的同學(xué)可以了解一下。
    2016-11-11
  • Nginx一鍵安裝部署靜態(tài)網(wǎng)頁的過程詳解

    Nginx一鍵安裝部署靜態(tài)網(wǎng)頁的過程詳解

    這篇文章主要介紹了Nginx一鍵安裝部署靜態(tài)網(wǎng)頁,主要介紹nginx安裝和部署,本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友參考下吧
    2022-06-06
  • 使用Nginx解決跨域問題的步驟詳解

    使用Nginx解決跨域問題的步驟詳解

    這篇文章主要給大家介紹了使用Nginx解決跨域問題的方法,文中有詳細(xì)的流程步驟,通過圖片介紹的非常詳細(xì),對我們的學(xué)習(xí)或工作有一定的參考價值,需要的朋友可以參考下
    2023-08-08

最新評論