最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

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

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

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

正常配置情況下:

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

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

訪問(wèn)url路徑/prod-api/api經(jīng)過(guò)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 反向代理地址最后加一個(gè)/
  • 在location匹配的url路徑前添加^~/

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

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

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

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

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

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

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

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

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

最終效果

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)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • 使用nginx打包部署前端vue項(xiàng)目完整過(guò)程(保姆級(jí)教程)

    使用nginx打包部署前端vue項(xiàng)目完整過(guò)程(保姆級(jí)教程)

    這篇文章主要給大家介紹了關(guān)于使用nginx打包部署前端vue項(xiàng)目的相關(guān)資料,包括打包命名、執(zhí)行打包命令、檢查打包成功、下載和解壓Nginx、部署到Nginx、啟動(dòng)Nginx并訪問(wèn)項(xiàng)目、以及Nginx的優(yōu)勢(shì),需要的朋友可以參考下
    2024-11-11
  • Nginx正向反向代理區(qū)別及原理解析

    Nginx正向反向代理區(qū)別及原理解析

    這篇文章主要介紹了Nginx正向反向代理區(qū)別及原理解析,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-03-03
  • 為Nginx添加SPDY功能

    為Nginx添加SPDY功能

    我也開始嘗試著給自己的論壇加上SPDY協(xié)議,WEB服務(wù)器本人選擇的是nginx,在過(guò)去,Nginx并沒(méi)有內(nèi)置SPDY協(xié)議,需要打開的話還要下載開發(fā)版然后手動(dòng)編譯,很不方便
    2014-12-12
  • 詳解nginx中的日志配置

    詳解nginx中的日志配置

    日志對(duì)于統(tǒng)計(jì)排錯(cuò)來(lái)說(shuō)非常有利的,本文為大家總結(jié)了nginx日志相關(guān)的配置如access_log、log_format、open_log_file_cache等內(nèi)容,感興趣的小伙伴可以了解下
    2023-08-08
  • nginx部署vue項(xiàng)目的詳細(xì)圖文教程

    nginx部署vue項(xiàng)目的詳細(xì)圖文教程

    很多小伙伴在做完Vue項(xiàng)目之后,想要部署到服務(wù)器上自己運(yùn)行試試,下面這篇文章主要給大家介紹了關(guān)于nginx部署vue項(xiàng)目的詳細(xì)圖文教程,文中通過(guò)圖文介紹的非常詳細(xì),需要的朋友可以參考下
    2022-09-09
  • nginx里的rewrite跳轉(zhuǎn)的實(shí)現(xiàn)

    nginx里的rewrite跳轉(zhuǎn)的實(shí)現(xiàn)

    這篇文章主要介紹了nginx里的rewrite跳轉(zhuǎn)的實(shí)現(xiàn),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2020-11-11
  • 修改配置解決Nginx服務(wù)器中常見的上傳與連接錯(cuò)誤

    修改配置解決Nginx服務(wù)器中常見的上傳與連接錯(cuò)誤

    這篇文章主要介紹了修改配置解決Nginx服務(wù)器中常見的上傳與連接錯(cuò)誤的方法,分別針對(duì)Nginx的413錯(cuò)誤與111錯(cuò)誤,需要的朋友可以參考下
    2016-01-01
  • 在ubuntu下為nginx配置支持cgi腳本的方案

    在ubuntu下為nginx配置支持cgi腳本的方案

    本文的需求:讓nginx能夠解析.cgi后綴的文件,相信會(huì)特意看這篇文章的人對(duì)CGI是什么及其作用已經(jīng)有了足夠的了解,所以在這里不再贅述,直接開始配置。
    2017-02-02
  • Nginx配置ssl證書(https)的全過(guò)程

    Nginx配置ssl證書(https)的全過(guò)程

    這篇文章主要介紹了Nginx配置ssl證書(https)的過(guò)程,在文中大家需要特別注意,如果有防火墻的話,記得開通443端口,本文給大家介紹的非常詳細(xì),需要的朋友可以參考下
    2022-10-10
  • Nginx PHP-Fcgi中因PHP執(zhí)行時(shí)間導(dǎo)致504 Gateway Timeout錯(cuò)誤解決記錄

    Nginx PHP-Fcgi中因PHP執(zhí)行時(shí)間導(dǎo)致504 Gateway Timeout錯(cuò)誤解決記錄

    這篇文章主要介紹了Nginx PHP-Fcgi中因PHP執(zhí)行時(shí)間導(dǎo)致504 Gateway Timeout錯(cuò)誤解決記錄,本文的解決方法得來(lái)不易,需要的朋友可以參考下
    2014-09-09

最新評(píng)論

留坝县| 抚宁县| 德州市| 玛纳斯县| 渭南市| 丘北县| 武宁县| 黄山市| 特克斯县| 阳信县| 徐汇区| 丰镇市| 宁陵县| 益阳市| 扶沟县| 勃利县| 沙湾县| 江津市| 双桥区| 卫辉市| 潞城市| 扶绥县| 吉林市| 长宁县| 黄梅县| 临江市| 合江县| 邓州市| 抚顺县| 三穗县| 文山县| 榆树市| 兴业县| 衡水市| 华宁县| 吉木乃县| 淮滨县| 祥云县| 平谷区| 武平县| 镇远县|