如何解决使用Docker并希望使用NGINX反向代理到HTTP Grafana的HTTP到HTTPS
我正在使用Docker,并为NGINX和Grafana提供了单独的容器。我试图最终使与浏览器的连接成为HTTPS,并且能够看到Grafana网站。我需要做三件事才能做到这一点,但是无论我用多少Google,我都无法使它正常工作。
- 将所有进入NGINX的HTTP流量切换为HTTPS
- 具有将HTTPS流量传输到Grafana容器的NGINX反向代理。
这些又位于Docker容器中。我想使用Docker网络进行NGINX和Grafana之间的通信,并且该容器的名称是端口3000上的grafana。
我目前的NGINX default.conf为:
server {
listen 80;
listen [::]:80;
server_name localhost;
return 301 https://$host$request_uri;
}
server {
listen 443 ssl;
server_name localhost;
ssl_certificate /etc/ssl/certs/nginx-selfsigned.crt; #
or /etc/ssl/openhab.crt
ssl_certificate_key /etc/ssl/private/nginx-selfsigned.key;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_ciphers HIGH:!aNULL:!MD5;
location / {
proxy_pass http://grafana/;
}
}
它没有发送给Grafana。它将HTTPS切换到HTTP,但在那里停止。我正在使用另一台计算机,该计算机的主机文件已编辑,且mmig.com转到该计算机的IP地址。
我可以看到http://mmig.com转到https://mmig.com,然后停在那里。不会带我去格拉法纳的。
运行时出现以下错误。
nginx | /docker-entrypoint.sh: Looking for shell scripts in /docker-entrypoint.d/
nginx | /docker-entrypoint.sh: Launching /docker-entrypoint.d/10-listen-on-ipv6-by-default.sh
nginx | 10-listen-on-ipv6-by-default.sh: error: can not modify /etc/nginx/conf.d/default.conf (read-only file system?)
nginx | /docker-entrypoint.sh: Launching /docker-entrypoint.d/20-envsubst-on-templates.sh
nginx | /docker-entrypoint.sh: Configuration complete; ready for start up
nginx | 2020/09/11 17:26:59 [emerg] 1#1: host not found in upstream "grafana" in /etc/nginx/conf.d/default.conf:16
nginx | nginx: [emerg] host not found in upstream "grafana" in /etc/nginx/conf.d/default.conf:16```
Docker-compose
``` grafana:
image: grafana/grafana
container_name: grafana
restart: always
depends_on:
- influxdb
- nginx
ports:
- "3000:3000"
networks:
- monitoring
volumes:
- grafana-db:/var/lib/grafana
- grafana-log:/var/log/grafana
- grafana-conf:/etc/grafana
- ./certs:/etc/ssl:ro
nginx:
image: nginx
container_name: nginx
restart: always
ports:
- "80:80"
- "443:443"
networks:
- monitoring
volumes:
- ./nginx/etc/nginx:/etc/nginx:ro
- ./certs:/etc/ssl:ro
networks:
monitoring:
nginx.conf
```
user nginx;
worker_processes 1;
error_log /var/log/nginx/error.log warn;
pid /var/run/nginx.pid;
events {
worker_connections 1024;
}
http {
include /etc/nginx/mime.types;
default_type application/octet-stream;
log_format main '$remote_addr - $remote_user [$time_local] "$request" '
'$status $body_bytes_sent "$http_referer" '
'"$http_user_agent" "$http_x_forwarded_for"';
access_log /var/log/nginx/access.log main;
sendfile on;
#tcp_nopush on;
keepalive_timeout 65;
#gzip on;
upstream grafana {
server grafana:3000;
}
include /etc/nginx/conf.d/*.conf;
}
```
这是我当前的NGINX default.conf文件,其中HTTP转到了HTTPS,但它甚至都没有转到默认的NGINX主页。我还不知道为什么会这样。
``` server {
listen 80;
server_name localhost;
return 301 https://$host$request_uri;
}
server {
listen 443 ssl;
server_name localhost;
# SSL
ssl_certificate /etc/ssl/certs/nginx-selfsigned.crt; #
or /etc/ssl/openhab.crt
ssl_certificate_key /etc/ssl/private/nginx-selfsigned.key;
location / {
root /usr/share/nginx/html;
index index.html index.htm;
}
}
```
解决方法
由于我的主机位于Virtualbox VM上,并且位于NAT后面,因为另一个VM使用网桥网络,代理传递被破坏了。我用此VM设置了另一台计算机,它能够使用桥接网络,并且运行正常。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。