连接被拒绝:docker 容器中的 Nginx HTTPS 反向代理
Connection refused : Nginx HTTPS reverse proxy in docker container
我想在 docker 容器 ubuntu/centos 上使用 nginx 设置 https
反向代理。在浏览器端,我收到 connection refused
错误。而且,我在 /var/log/nginx/access.log
或 /var/log/nginx/error.log
.
下看不到任何内容
我能够再次在 docker 容器上使用 nginx 设置 http
反向代理。并且,还在普通 ubuntu 和 centos 虚拟机上使用 nginx https
反向代理。
可以理解 https
在 docker 容器上使用 nginx 的反向代理无法从浏览器连接的原因。?
如果需要任何其他信息,我可以为您提供。提前致谢。
供参考,请查看此 sites-available/default
文件。
server {
listen 80;
server_name localhost;
return 301 https://$host$request_uri;
}
server {
listen 443 ssl;
server_name localhost;
ssl_certificate /etc/nginx/ssl/cert.pem;
ssl_certificate_key /etc/nginx/ssl/cert.key;
ssl on;
ssl_session_cache builtin:1000 shared:SSL:10m;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_ciphers HIGH:!aNULL:!eNULL:!EXPORT:!CAMELLIA:!DES:!MD5:!PSK:!RC4;
ssl_prefer_server_ciphers on;
location ~* /rabbitmq/(.*) {
rewrite ^\/rabbitmq\/(.*)$ / break;
proxy_pass http://127.0.0.1:15672;
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_set_header X-NginX-Proxy true;
proxy_redirect http:// https://;
}
location ~* /api/(.*) {
rewrite ^/api/(.*)$ / break;
proxy_pass http://127.0.0.1:3000;
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_set_header X-NginX-Proxy true;
proxy_redirect http:// https://;
}
}
谢谢,
象头神
您可能 运行在 "bridge" 网络模式下运行您的容器(这是默认设置),这意味着您的 127.0.0.1 不是你认为是。它将为您的容器 运行ning nginx 使用虚拟化网络适配器。要快速修复它,您可以添加
--net=host
您的 docker 运行 命令的参数。还有其他选项,但我需要更多地了解您的设置和要求才能提出建议。
看起来,我需要公开 HTTP 和 HTTPS 端口,因为 nginx 反向代理配置为仅服务器 HTTPS 流量。
docker run -d -p 80:80 -p 443:443 nginx-container
当我开始公开 HTTPS 端口时,它起作用了。
我想在 docker 容器 ubuntu/centos 上使用 nginx 设置 https
反向代理。在浏览器端,我收到 connection refused
错误。而且,我在 /var/log/nginx/access.log
或 /var/log/nginx/error.log
.
我能够再次在 docker 容器上使用 nginx 设置 http
反向代理。并且,还在普通 ubuntu 和 centos 虚拟机上使用 nginx https
反向代理。
可以理解 https
在 docker 容器上使用 nginx 的反向代理无法从浏览器连接的原因。?
如果需要任何其他信息,我可以为您提供。提前致谢。
供参考,请查看此 sites-available/default
文件。
server {
listen 80;
server_name localhost;
return 301 https://$host$request_uri;
}
server {
listen 443 ssl;
server_name localhost;
ssl_certificate /etc/nginx/ssl/cert.pem;
ssl_certificate_key /etc/nginx/ssl/cert.key;
ssl on;
ssl_session_cache builtin:1000 shared:SSL:10m;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_ciphers HIGH:!aNULL:!eNULL:!EXPORT:!CAMELLIA:!DES:!MD5:!PSK:!RC4;
ssl_prefer_server_ciphers on;
location ~* /rabbitmq/(.*) {
rewrite ^\/rabbitmq\/(.*)$ / break;
proxy_pass http://127.0.0.1:15672;
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_set_header X-NginX-Proxy true;
proxy_redirect http:// https://;
}
location ~* /api/(.*) {
rewrite ^/api/(.*)$ / break;
proxy_pass http://127.0.0.1:3000;
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_set_header X-NginX-Proxy true;
proxy_redirect http:// https://;
}
}
谢谢, 象头神
您可能 运行在 "bridge" 网络模式下运行您的容器(这是默认设置),这意味着您的 127.0.0.1 不是你认为是。它将为您的容器 运行ning nginx 使用虚拟化网络适配器。要快速修复它,您可以添加
--net=host
您的 docker 运行 命令的参数。还有其他选项,但我需要更多地了解您的设置和要求才能提出建议。
看起来,我需要公开 HTTP 和 HTTPS 端口,因为 nginx 反向代理配置为仅服务器 HTTPS 流量。
docker run -d -p 80:80 -p 443:443 nginx-container
当我开始公开 HTTPS 端口时,它起作用了。