nginx 配置了两天了,还是配置不出,我是真的菜。
其中放弃去补了一些 nginx 的知识依然配不出,最后问的 GhatGPT 出来的。
主要问题:http 正常,https 就无法通行。(原因很多,证书的原因,代理的原因,最主要的原因应该是我配置冲突了)
---------废话补多说---上代码-----------------------
--------------------------------------------------
我:
我的域名是 www.v2ex.com,它正常解析到 120.00.00.93 ,我的 80 ,8001 端口正常开放
我有个 Django 程序,python3 manage.py runserveri 8001
我的前端文件是 root /home/www/dist;
现在需要你配置下 nginx
1 、要求能通过 v2ex.com 访问我的网站
2 、要求配置 https,其中证书文件域名都是 v2ex.com 的
ssl_certificate /home/Nginx/1_v2ex.com_bundle.crt;
#请填写私钥文件的相对路径或绝对路径
ssl_certificate_key /home/Nginx/2_v2ex.com.key;
3 、对其中的 api 开头的都转到我的 django 程序 8001 端口
4 、请注意 https 的问题
------ChatGPT-------------------------------------
server {
listen 80;
listen [::]:80;
server_name v2ex.com www.v2ex.com;
return 301 https://$server_name$request_uri;
}
server {
listen 443 ssl;
listen [::]:443 ssl;
server_name v2ex.com www.v2ex.com;
# SSL 证书配置
ssl_certificate /home/Nginx/1_v2ex.com_bundle.crt;
ssl_certificate_key /home/Nginx/2_v2ex.com.key;
location / {
root /home/www/dist;
try_files $uri $uri/ /index.html;
}
location /api {
proxy_pass http://127.0.0.1:8001;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
}
------ChatGPT-------------------------------------
------我的错误配置-------------------------------------
server {
listen 80;
server_name 120.00.000.93; #打码处理
# 配置静态文件目录
location / {
root /home/www/dist;
try_files $uri $uri/ /index.html;
}
location /api {
proxy_pass http://120.00.000.93:8001;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
}
server {
listen 443 ssl;
server_name www.v2ex.com;
ssl_certificate /home/Nginx/1_v2ex.com_bundle.crt;
ssl_certificate_key /home/Nginx/2_v2ex.com.key;
ssl_session_timeout 5m;
ssl_protocols TLSv1.2 TLSv1.3;
ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:HIGH:!aNULL:!MD5:!RC4:!DHE;
ssl_prefer_server_ciphers on;
location / {
root /home/www/dist;
# 用于配合 browserHistory 使用
try_files $uri $uri/ /index.html;
}
location /api {
proxy_pass https://localhost:8001/;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_set_header Host $http_host;
proxy_set_header X-Real-IP $remote_addr;
}
}
------我的错误配置-------------------------------------
1
shubiao 2023-03-18 16:40:26 +08:00
chat-gpt, 这么强?!!!!
这比人脑的知识储备大无数倍,还能听懂人话,还能给出正确的答案 |
2
SenLief 2023-03-18 16:47:40 +08:00
proxy_pass https://localhost:8001/;
|
3
documentzhangx66 2023-03-18 16:51:42 +08:00
|
4
documentzhangx66 2023-03-18 16:53:29 +08:00
楼主这种问题,主流的处理方法是,先去 nginx 官网,把示例配置文件扒下来跑。
成功后,再逐行修改为你需要的配置,每改一行,就重启服务,看看有没有错误。 遇到错误,去翻日志。 这种方法对于处理复杂配置文件,有奇效。 |
5
zhangyichent 2023-03-18 17:03:15 +08:00
@documentzhangx66 GPT-4 已经有了长足进步,去试试看吧,真的很可怕
|
6
hymzhek 2023-03-18 17:11:09 +08:00
80 写个跳转到 443 443 只写一次反代配置就行了
|
7
hymzhek 2023-03-18 17:11:31 +08:00
proxy_pass https://localhost:8001/;
”httpS“ |
8
zzping OP @documentzhangx66 谢谢,我一直在逐行调试自己的代码,没想到您这种方式调试,晚上再试试
|
10
bjzhush 2023-03-19 09:16:00 +08:00
逐行调试是错误的方法,因为 Nginx 配置的最小单位是块
|