docker中nginx的location轉(zhuǎn)發(fā)不生效的解決
nginx的location轉(zhuǎn)發(fā)不生效
問題
docker創(chuàng)建nginx容器后,修改nginx.conf配置服務(wù)轉(zhuǎn)發(fā),始終不成功,proxy_pass配置如下

解決辦法
需將上圖中的localhost改為容器內(nèi)查看到的宿主ip;
因?yàn)槌跏嫉膎ginx容器內(nèi)無ping命令,所以需要安裝,先執(zhí)行docker exec -it <容器ID> /bin/bash進(jìn)入nginx容器,然后執(zhí)行apt-get update,然后執(zhí)行apt-get install inetutils-ping安裝工具,最后執(zhí)行ping host.docker.internal查看宿主ip,如下圖

最終,將localhost改為宿主ip,重啟容器,即可成功轉(zhuǎn)發(fā)服務(wù)

nginx代理轉(zhuǎn)發(fā)location配置的坑
坑了一下午的時間
述求
配置 http://xxx/api/xxx 轉(zhuǎn)發(fā)到 http://xxx:8080/xxx 端口地址
原有的配置
location /api {
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-NginX-Proxy true;
proxy_pass http://localhost:8080;
}遇到的問題
轉(zhuǎn)發(fā)的地址是 http://xxx:8080/api/xxx ,里面還是帶有/api,不符合我們的要求
接下來嘗試修改為
location /api {
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-NginX-Proxy true;
proxy_pass http://localhost:8080/;
}修改之后轉(zhuǎn)發(fā)的地址變?yōu)?http://xxx:8080//xxx 會存在 // 的情況
接下來修改為
location /api {
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-NginX-Proxy true;
proxy_pass http://localhost:8080/;
}就正確了, http://xxx:8080/xxx
查閱了網(wǎng)絡(luò),還有一種修改的方式,使用rewrite,但是這個屬于重定向,并不符合我們的要求
location /api {
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-NginX-Proxy true;
rewrite ^/api/(.*) http://localhost:8080/$1;
}但是上述方式如果和upStream進(jìn)行聯(lián)合使用的話,會導(dǎo)致無法解析upstream里面的內(nèi)容
總結(jié)
以上為個人經(jīng)驗(yàn),希望能給大家一個參考,也希望大家多多支持腳本之家。
相關(guān)文章
Docker實(shí)踐之python應(yīng)用容器化
這篇文章主要介紹了Docker實(shí)踐之python應(yīng)用容器化,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2019-06-06
詳解docker 容器不自動退出結(jié)束運(yùn)行的方法
本文主要簡單介紹 docker 容器與前置進(jìn)程的關(guān)系,以及如何編寫 Dockerfile/docker-compose.yml 優(yōu)雅的讓容器可以常駐運(yùn)行。具有一定的參考價值,感興趣的小伙伴們可以參考一下2019-01-01
Jenkins整合Docker自動化部署的實(shí)現(xiàn)
本文主要介紹了Jenkins整合Docker自動化部署的實(shí)現(xiàn),通過結(jié)合Jenkins的持續(xù)集成和Docker的容器化技術(shù),可以高效地構(gòu)建、測試和部署應(yīng)用程序,感興趣的可以了解一下2023-11-11
Docker+Jenkins+Gitee自動化部署maven項(xiàng)目的實(shí)現(xiàn)
本文主要介紹了Docker+Jenkins+Gitee自動化部署maven項(xiàng)目的實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2023-06-06
Docker快速部署SpringBoot項(xiàng)目介紹
大家好,本篇文章主要講的是Docker快速部署SpringBoot項(xiàng)目介紹,感興趣的同學(xué)趕快來看一看吧,對你有幫助的話記得收藏一下哦,方便下次瀏覽2021-12-12
詳解docker鏡像centos7配置Java運(yùn)行環(huán)境
基于docker官網(wǎng)centos7鏡像配置java運(yùn)行環(huán)境,自己安裝jdk和tomcat,解決docker容器與宿主機(jī)時間不一致問題2017-05-05

