我有几个Rails网站在Docker开发容器中运行。(Ubuntu 20.04)。Nginx在Ubuntu中作为反向代理运行,Windows中的IIS是关闭的。Ubuntu/etc/hosts文件是从Windows中的hosts文件自动填充的。它是这样设置的,因为团队中的其他人在Mac上运行Linux,而我在Rails和之间切换。net开发。
例如,网站mysite1.localhost在Docker的端口8081上公开,并且两个主机文件中都有一个条目"127.0.0.1 mysite1.localhost"。
- 我遇到的问题是浏览(Windows上的Chrome)localhost:8081从网站返回200,很好,但使用主机名mysite1.localhost返回502 Bad Gateway。**
我假设Nginx不知道Docker或类似的事情?
下面是Nginx的mysite1.conf:
server {
listen 80;
listen [::]:80;
server_name mysite1.localhost;
resolver 127.0.0.1;
location ~* "^/shared-nav" {
proxy_set_header Accept-Encoding "";
proxy_pass http://localhost:3000/stuff$is_args$args;
}
location / {
ssi on;
ssi_silent_errors off;
log_subrequest on;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_pass http://127.0.0.1:8081;
add_header Cache-Control "no-cache";
if ($request_filename ~* ^.*?/([^/]*?)$) {
set $filename $1;
}
if ($filename ~* ^.*?\.(eot)|(ttf)|(woff)|(woff2)$) {
add_header Access-Control-Allow-Origin *;
}
}
}
我可以在nginx/error.log中看到两个问题:
2023年2月2日08:50:10 [警告] 2841编号2841:0.0.0.0上的服务器名称"mysite1.localhost"冲突:80,已忽略
2023年2月2日08:50:12 [错误] 2845编号2845:* 52连接()失败(111:连接被拒绝),客户端:::1,服务器:本地主机,请求:"GET/HTTP/1.1",上游:"www.example.com",主机:"mysite1.localhost"http://127.0.0.1:8081/", host: "mysite1.localhost"
Docker是否运行似乎并不重要。
对于冲突的服务器名称警告,我已经尝试寻找需要删除的临时文件,但没有找到任何东西。
我所看到的大多数其他问题都涉及到解决容器化Nginx的问题,因为它位于WSL中。
如果我能更好地解释这个问题,请告诉我,谢谢你的帮助。
1条答案
按热度按时间vxf3dgd41#
我没有考虑到的一件事是使用VS代码在容器中开发意味着端口被转发到Windows -尽管容器在WSL中运行,VS代码在Windows中运行。
所以,我可以重新打开IIS并将其用作反向代理,或者尝试使用Nginx for Windows。我选择了后者,因为这意味着我可以与Linux的家伙共享相同的配置文件,并将看到它的效果,现在我可以通过主机名浏览网站。
如果其他人需要使用这个设置,我很乐意传授我的经验。