我有一个简单的任务与nginx,但我不能解决它:
我有一个域example.com
,它指向本地服务器192.168.1.150
,它在docker中运行nginx。
但是我有另一个容器,“myapp”运行在端口8080上,我想传递这个位置-从“https://192.168.1.150/myapp”和“https://example.com/myapp”到“http://192.168.1.150:8080”,这是http唯一的,我想通过nginx建立一个安全的连接。
解决问题
目前,如果我请求https://192.168.1.150/myapp
,它会导航到https://192.168.1.150/login
,但目标应该是https://192.168.1.150/myapp/login
。虽然URL“更改”成功,但nginx响应HTTP 404;
在nginx.conf中查看我的位置设置:
location /myapp {
proxy_pass http://192.168.1.150:8080;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection keep-alive;
proxy_set_header Host $http_host;
proxy_cache_bypass $http_upgrade;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
}
SSL
顺便说一句我已经设置了从HTTP重定向的SSL,用一个简单的位置“/test”测试,它返回纯文本“OK”,看起来很好。
如果这个问题不能像这样解决,我也可以将它与另一台服务器一起使用,并侦听443以外的另一个端口。(尝试,结果相同)
任何帮助将不胜感激!先谢谢你了。
2条答案
按热度按时间okxuctiv1#
试试这个,也许这就是你需要的:
proxy_pass http://myapp;
zkure5ic2#
回答我自己的问题:我不得不重写URI以正确重定向。我没有合适的词在网上找到信息,但像“保存”这样的关键字有助于找到例子。
解决方案是使用nginx的rewrite模块,并编写一个'myapp'部分的替换:
rewrite ^/myapp(.*) $1? break;
.关于ngx_http_rewrite_module.html的更多信息并搜索'replacement'。
所以目前我的工作配置是一个简单的Python http.server:
其他重定向到Web应用程序和服务器不起作用,但我的问题得到了解决。
我也遇到了没有尾随斜杠的问题,比如
example.com/myapp
,nginx丢弃了HTTP 500,我用这个克服了这个问题:谢谢你的帮助!