Oma*_*iel 4 nginx docker nginx-reverse-proxy nginx-config
我正在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;
}
}
}
Run Code Online (Sandbox Code Playgroud)
我使用这个容器运行
docker run -p 3000:443 -it -d --name nginxtest nginx-test
Run Code Online (Sandbox Code Playgroud)
并得到以下错误
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;" ]
Run Code Online (Sandbox Code Playgroud)
奇怪的是,有时它工作得很好,突然间,如果我重新创建容器,它就会停止工作,甚至无法工作。
甚至尝试执行以下操作。还是没有运气
server {
listen 80;
server_name localhost:3000
return 301 https://localhost:3000$request_uri;
}
Run Code Online (Sandbox Code Playgroud)
当我运行以下docker命令时的另一件事
docker run -p 3000:443 -p 3001:80 -it -d --name nginxtest nginx-test
Run Code Online (Sandbox Code Playgroud)
并转到localhost:3001,它将我重定向到https很好,但其他事情确实中断了。很抱歉这个长问题
Yar*_*dam 10
将以下指令放入您侦听端口443的服务器块中。
error_page 497 https://$host:$server_port$request_uri;
Run Code Online (Sandbox Code Playgroud)
该伪指令意味着发生“将纯HTTP请求发送到HTTPS端口”时,将其重定向到当前主机名,端口和URI的https版本。
Kinda hacky但可以。
| 归档时间: |
|
| 查看次数: |
2315 次 |
| 最近记录: |