我正在尝试使用 nginx 容器设置反向代理,并将一些其他容器化应用程序路由到后面。我已将 nginx 中的 default.config 修改为以下内容。我没有更改任何内容nginx.config
。
server {
listen 80;
server_name localhost;
location / {
root /usr/share/nginx/html;
index index.html index.htm;
}
location /mailhog {
proxy_pass http://mailhog:8025;
}
location /httpd {
proxy_pass http://httpd:8080;
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root /usr/share/nginx/html;
}
}
我的dockerfile使用nginx镜像并且仅替换了default.config。
Docker 运行命令
docker run -d --name mailhog -p 8025:8025 mailhog/mailhog
docker run -d --name httpd -p 8080:80 httpd
docker run -d --name mynginx --link=httpd --link=mailhog -p 80:80 mynginx
当我导航到 / 时,我得到了标准的 nginx 索引页。Mailhog 给出 404,httpd 给出 502。我尝试了 docker runs 命令的几个变体,例如使用--expose
或不打开任何端口。如果我导航实际的 URL,应用程序可以正常工作,只是不能通过反向代理。
我从这里。我考虑过使用nginx-proxy
,但我不想使用 subdomain.domain url 模式。
答案1
问题是 proxy_pass url 末尾需要一个斜杠。
...
location /mailhog/ {
proxy_pass http://mailhog:8025/;
}
...