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

nginx代理去掉URL前綴的實現方法

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

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

正常配置情況下:

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

需要實現的功能需求:

訪問url路徑/prod-api/api經過nginx反向代理后,到達后端服務的實際url地址為/api。

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

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;
}

注意點:

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

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

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

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

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

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

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

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

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

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

最終效果

Nginx 將

127.0.0.1:8082/proxy/switchSystemRole?roleId=29

轉發(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;
    }
}

總結

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

相關文章

  • 使用nginx打包部署前端vue項目完整過程(保姆級教程)

    使用nginx打包部署前端vue項目完整過程(保姆級教程)

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

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

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

    為Nginx添加SPDY功能

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

    詳解nginx中的日志配置

    日志對于統(tǒng)計排錯來說非常有利的,本文為大家總結了nginx日志相關的配置如access_log、log_format、open_log_file_cache等內容,感興趣的小伙伴可以了解下
    2023-08-08
  • nginx部署vue項目的詳細圖文教程

    nginx部署vue項目的詳細圖文教程

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

    nginx里的rewrite跳轉的實現

    這篇文章主要介紹了nginx里的rewrite跳轉的實現,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2020-11-11
  • 修改配置解決Nginx服務器中常見的上傳與連接錯誤

    修改配置解決Nginx服務器中常見的上傳與連接錯誤

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

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

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

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

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

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

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

最新評論

都匀市| 大渡口区| 鄄城县| 阿瓦提县| 浙江省| 通许县| 陕西省| 克什克腾旗| 清苑县| 酉阳| 平湖市| 五河县| 赤城县| 奇台县| 平乡县| 富平县| 轮台县| 云阳县| 乐安县| 喀喇沁旗| 青海省| 永胜县| 石屏县| 沛县| 乐亭县| 舞阳县| 宝丰县| 长白| 武安市| 通山县| 黄冈市| 迭部县| 怀宁县| 隆昌县| 襄汾县| 洪湖市| 蛟河市| 翁源县| 玛沁县| 女性| 南汇区|