【发布时间】:2019-07-28 09:11:16
【问题描述】:
我在 docker 中运行 nginx。 HTTPS 工作正常,但是当我明确发出 HTTP 请求时,我收到以下错误
400 错误请求 普通的 HTTP 请求被发送到 HTTPS 端口
nginx.conf如下
worker_processes auto ;
events {}
http {
include /etc/nginx/mime.types;
access_log /var/log/nginx/main.access.log;
server {
listen 80;
location / {
return 301 https://localhost:3000$request_uri;
}
}
server {
listen 443 ssl;
server_name localhost:3000;
root /var/www/html;
ssl_certificate /etc/nginx/ssl/cert.pem;
ssl_certificate_key /etc/nginx/ssl/key.pem;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_prefer_server_ciphers on;
ssl_ciphers ECDH+AESGCM:ECDH+AES256:ECDH+AES128:DH+3DES:!ADH:!AECDH:!MD5;
location / {
try_files $uri /index.html;
}
}
}
我使用
运行这个容器docker run -p 3000:443 -it -d --name nginxtest nginx-test
并得到以下错误
docker文件如下
FROM nginx:latest
COPY ./build /var/www/html
COPY ./nginx.conf /etc/nginx/nginx.conf
COPY ./ssl /etc/nginx/ssl
EXPOSE 443
CMD [ "nginx","-g","daemon off;" ]
奇怪的是,有时它工作得非常好,突然间它停止工作,如果我重新创建容器甚至都无法工作。
甚至尝试执行以下操作。还是没有运气
server {
listen 80;
server_name localhost:3000
return 301 https://localhost:3000$request_uri;
}
当我运行以下 docker 命令时,另一件奇怪的事情
docker run -p 3000:443 -p 3001:80 -it -d --name nginxtest nginx-test
然后转到 localhost:3001 它会将我重定向到 https 就好了,但其他事情确实会中断。 抱歉问了这么长的问题
【问题讨论】:
标签: docker nginx nginx-reverse-proxy nginx-config