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配置的坑
坑了一下午的時(shí)間
述求
配置 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
會(huì)存在 //
的情況
接下來修改為
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,但是這個(gè)屬于重定向,并不符合我們的要求
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)合使用的話,會(huì)導(dǎo)致無法解析upstream里面的內(nèi)容
總結(jié)
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
Docker實(shí)踐之python應(yīng)用容器化
這篇文章主要介紹了Docker實(shí)踐之python應(yīng)用容器化,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2019-06-06詳解docker 容器不自動(dòng)退出結(jié)束運(yùn)行的方法
本文主要簡(jiǎn)單介紹 docker 容器與前置進(jìn)程的關(guān)系,以及如何編寫 Dockerfile/docker-compose.yml 優(yōu)雅的讓容器可以常駐運(yùn)行。具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2019-01-01Jenkins整合Docker自動(dòng)化部署的實(shí)現(xiàn)
本文主要介紹了Jenkins整合Docker自動(dòng)化部署的實(shí)現(xiàn),通過結(jié)合Jenkins的持續(xù)集成和Docker的容器化技術(shù),可以高效地構(gòu)建、測(cè)試和部署應(yīng)用程序,感興趣的可以了解一下2023-11-11Docker+Jenkins+Gitee自動(dòng)化部署maven項(xiàng)目的實(shí)現(xiàn)
本文主要介紹了Docker+Jenkins+Gitee自動(dòng)化部署maven項(xiàng)目的實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2023-06-06Docker快速部署SpringBoot項(xiàng)目介紹
大家好,本篇文章主要講的是Docker快速部署SpringBoot項(xiàng)目介紹,感興趣的同學(xué)趕快來看一看吧,對(duì)你有幫助的話記得收藏一下哦,方便下次瀏覽2021-12-12Docker搭建私有倉(cāng)庫的實(shí)現(xiàn)步驟
因?yàn)閐ockerHub公共倉(cāng)庫是外網(wǎng)的,所以訪問就特別慢,所以一般公司都會(huì)搭建私人的鏡像倉(cāng)庫來保存鏡像,本文主要介紹了Docker搭建私有倉(cāng)庫的實(shí)現(xiàn)步驟,具有一定的參考價(jià)值,感興趣的可以了解一下2024-03-03詳解docker鏡像centos7配置Java運(yùn)行環(huán)境
基于docker官網(wǎng)centos7鏡像配置java運(yùn)行環(huán)境,自己安裝jdk和tomcat,解決docker容器與宿主機(jī)時(shí)間不一致問題2017-05-05