我想在docker容器上使用nginx设置https
反向代理ubuntu / centos。在浏览器端,我收到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\/(.*)$ /$1 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/(.*)$ /$1 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://;
}
}
谢谢, 内甚
答案 0 :(得分:5)
看起来,我需要公开HTTP和HTTPS端口,因为nginx反向代理配置为仅服务于HTTPS流量。
docker run -d -p 80:80 -p 443:443 nginx-container
当我开始公开HTTPS端口时,它就可以了。
答案 1 :(得分:0)
您可能正在使用#34; bridge"网络模式(默认设置),这意味着您的 127.0.0.1 不符合您的想象。它会为运行 nginx 的容器使用虚拟化网络适配器。要快速修复它,您可以添加
--net=host
docker run 命令的参数。还有其他选择,但我需要了解更多有关您的设置和要求的建议。