我正在嘗試使用 docker 容器中的 nginx 將所有 HTTP 流量重定向到 HTTPS。我正在使用docker-compose up. 運行后docker-compose up,出現錯誤:
[emerg] 1#1: cannot load certificate "/etc/nginx/etc/nginx/nginx/files/localhost.crt": BIO_new_file() failed (SSL: error:02001002:system library:fopen:No such file or directory:fopen('/etc/nginx/etc/nginx/nginx/files/localhost.crt','r') error:2006D080:BIO routines:BIO_new_file:no such file)
下面是我的 nginx.conf
組態檔
http {
upstream flask {
server app:8000;
}
server {
listen 80;
server_name localhost;
}
server {
listen 443 ssl;
server_name localhost;
ssl_certificate etc/nginx/nginx/files/localhost.crt; // this is location of where my certificate is on my local machine
ssl_certificate_key nginx/files/localhost.key;
location / {
proxy_pass http://flask;
proxy_set_header Host "localhost";
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-Proto $scheme;
}
}
}
我不知道為什么我會收到“沒有這樣的檔案”的錯誤訊息。下面是Dockerfile我正在構建和使用的 NGINX 影像。任何幫助,將不勝感激。
NGINX dockerfile
FROM nginx:1.19.2-alpine
COPY nginx.conf /etc/nginx/conf.d/default.conf
COPY /files/localhost.crt /etc/nginx/nginx/files/localhost.crt
uj5u.com熱心網友回復:
像這樣的東西就是你正在尋找的。
http {
upstream flask {
server app:8000;
}
server {
listen 80;
server_name localhost;
return 301 https://$server_name$request_uri;
}
server {
listen 443 ssl;
server_name localhost;
ssl_certificate /etc/nginx/nginx/files/localhost.crt; // this is location of where my certificate is on my local machine
ssl_certificate_key /etc/nginx/nginx/files/localhost.key;
location / {
proxy_pass http://flask;
proxy_set_header Host "localhost";
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-Proto $scheme;
}
}
}
您還需要復制密鑰。
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/383899.html
