Docker HTTP在nginx.conf中重定向到HTTPS
我有一个nginx.conf,其中我正在本地主机上运行一个应用程序。我需要将应用程序从HTTP重定向到HTTPS。在Docker HTTP在nginx.conf中重定向到HTTPS,docker,nginx,docker-compose,devops,Docker,Nginx,Docker Compose,Devops,我有一个nginx.conf,其中我正在本地主机上运行一个应用程序。我需要将应用程序从HTTP重定向到HTTPS。在nginx.conf中,我有如下配置: http { error_log /etc/nginx/error/error.log warn; #./nginx/error.log warn; client_max_body_size 20m; proxy_cache_path /etc/nginx/cache keys_zone=one:500m max_size=1
nginx.conf
中,我有如下配置:
http {
error_log /etc/nginx/error/error.log warn; #./nginx/error.log warn;
client_max_body_size 20m;
proxy_cache_path /etc/nginx/cache keys_zone=one:500m max_size=1000m;
server {
listen 80;
server_name localhost;
return 301 https://$server_name$request_uri;
}
server {
listen 443 ssl http2;
server_name localhost;
ssl_session_cache shared:SSL:50m;
ssl_session_timeout 1d;
ssl_session_tickets off;
ssl_certificate /etc/nginx/ssl.crt;
ssl_certificate_key /etc/nginx/ssl.key;
ssl_protocols TLSv1.2;
ssl_ciphers EECDH+AESGCM:EDH+AESGCM:EECDH:EDH:!MD5:!RC4:!LOW:!MEDIUM:!CAMELLIA:!ECDSA:!DES:!DSS:!3DES:!NULL;
ssl_prefer_server_ciphers on;
keepalive_timeout 70;
location / {
proxy_pass http://localhost:80;
proxy_ssl_certificate /etc/nginx/ssl.crt;
proxy_ssl_certificate_key /etc/nginx/ssl.key;
proxy_ssl_verify off;
allow all;
proxy_redirect off;
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-Forwarded-Host $server_name;
proxy_set_header X-Forwarded-Proto https;
#access_log /var/log/nginx/access.log;
#error_log /var/log/nginx/error.log;
client_max_body_size 0;
client_body_buffer_size 128k;
proxy_connect_timeout 1200s;
proxy_send_timeout 1200s;
proxy_read_timeout 1200s;
proxy_buffers 32 4k;
}
}
和docker-compose.yml,如下所示:-
version: '2'
services:
mysql:
image: mysql:5.7.21
restart: always
environment:
- MYSQL_ROOT_PASSWORD=admin
- MYSQL_DATABASE=bookstack
- MYSQL_USER=bookstack
- MYSQL_PASSWORD=admin
volumes:
- ./mysql:/var/lib/mysql
networks:
- bookstack-bridge
bookstack:
image: solidnerd/bookstack:latest
container_name: bookstack
restart: always
depends_on:
- mysql
environment:
- APP_URL=http://localhost:8080
volumes:
- ./uploads:/var/www/bookstack/public/uploads
- ./storage-uploads:/var/www/bookstack/public/storage
ports:
- 8080:8080
networks:
- bookstack-bridge
nginx:
image: nginx:latest
container_name: bookstack-nginx
restart: always
在docker-compose.yml中,我有APP\u URL=http://localhost:8080
env变量
有没有人知道,从HTTP重定向到HTTPS需要改变什么
提前谢谢。我定制了您的docker compose yml
这个解决方案对我有效:- 在docker-compose.yml中,在nginx服务部分添加了networks标记-
networks:
- bookstack-bridge
并且在nginx.conf中添加了proxy_pass作为-
proxy_pass http://bookstack:8080;
谢谢你们的帮助。但我不想使用符号链接。需要使用服务器块。你能告诉我需要更改什么配置吗?你能告诉我你的nginx错误日志是怎么写的吗?并设置代理_pass;代理你的通行证;如果您确认您的容器端口为8080?我无法看到容器内的错误日志。这是错误日志:-2020/09/28 10:08:25[warn]29#29:*7连接到上游时临时禁用上游服务器,客户端:192.168.16.1,服务器:localhost,请求:“GET/HTTP/2.0”,上游:,主机:“localhost”抱歉,您可以设置从容器或容器名称传递到IP的代理吗?请测试一下。
networks:
- bookstack-bridge
proxy_pass http://bookstack:8080;