作者qazsd (天际线)
看板Soft_Job
标题[请益] 使用Nginx显示找不到档案
时间Tue Nov 28 22:25:21 2023
请教版上大大,小弟使用Nginx来转发两个web service请求,其设定如下
server {
listen 80;
listen 1000;
server_name 192.168.1.150;
return 301
https://for_test.net$request_uri;
}
server {
listen 2000;
server_name 192.168.1.150;
return 301
https://for_test.net/forms$request_uri;
}
server {
listen 443 ssl;
server_name for_test.net;
ssl_certificate /etc/nginx/ssl/certs/for_test.crt;
ssl_certificate_key /etc/nginx/ssl/private/for_test.key;
ssl_session_timeout 5m;
ssl_session_cache shared:SSL:50m;
ssl_session_tickets off;
ssl_protocols TLSv1.2 TLSv1.3;
ssl_ciphers
'TLS_AES_128_GCM_SHA256:TLS_AES_256_GCM_SHA384:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-GCM-SHA384';
ssl_prefer_server_ciphers on;
add_header Strict-Transport-Security "max-age=31536000" always;
### A PyWebIO web service ###
location / {
proxy_pass
http://127.0.0.1:3000/;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
proxy_set_header X-Forwarded-Host $host;
proxy_set_header X-Forwarded-Server $host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Photo $scheme;
proxy_set_header HOST $host;
proxy_set_header X-Real-IP $remote_addr;
}
### A Streamlit web service ###
location /form {
proxy_pass
http://127.0.0.1:4000/;
alias /home/streamlit_app/;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
proxy_set_header X-Forwarded-Host $host;
proxy_set_header X-Forwarded-Server $host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Photo $scheme;
proxy_set_header HOST $host;
proxy_set_header X-Real-IP $remote_addr;
}
}
已知连线到
http://192.168.1.150时会成功转到
https://for_test.net
但是连线到
http://192.168.1.150/form时,则会显示Connection error
http://192.168.1.150/form对应的是使用Streamlit制作的web service
其错误似乎是找不到档案 (HTTP 404,非HTTP 301)
请问是否有大大能够指点迷津?
感谢
--
※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 106.1.232.104 (台湾)
※ 文章网址: https://webptt.com/cn.aspx?n=bbs/Soft_Job/M.1701181526.A.5AE.html
※ 编辑: qazsd (106.1.232.104 台湾), 11/28/2023 23:04:46
1F:嘘 B0988698088: 自己作业 11/28 23:15
2F:→ layer0930: 先把网路基本学好… 11/29 01:45
3F:嘘 MoonCode: 可以问llm 11/29 04:51
4F:嘘 tsaigi: ??? 11/29 08:39
5F:→ surimodo: 看无 11/29 10:21
6F:→ taitzyhwan: 可以问chatgpt 11/29 10:30
8F:→ kurtsgm: 我问copilot的 不用谢 11/29 11:31
9F:嘘 godddddd: 呃呃 找个可以检查错字的 11/29 16:14
10F:→ notimenofree: 问GPT 11/30 00:55
11F:→ srwhite: 你打xx.150/form应该会导到for_test.net/form吧 11/30 15:20
12F:→ srwhite: 看你for_test那有没有定义form的route 11/30 15:21
13F:→ srwhite: 或是照你的写法xx.150:2000可能可以打到 但我是觉得这样 11/30 15:23
14F:→ srwhite: 订有点怪 11/30 15:23
15F:→ ssdoz2sk: 1.先检查到底有没有转址,你弄301,不管有没有存取到资 12/01 00:48
16F:→ ssdoz2sk: 源,网址列应该会更新。2. location /form 改成 12/01 00:50
17F:→ ssdoz2sk: location /form/ ,不然你 proxy 过去的网址会变成 12/01 00:52
18F:→ ssdoz2sk: :4000// 这样 Streamlit 不是会回你 404 就是 403 12/01 00:53
19F:→ ssdoz2sk: 此外,你 port 2000 的 URI 是 form or forms 要确定欸~ 12/01 00:55
20F:→ anecam: for_test.net 的A record 是192.168.1.150? 12/01 10:30
21F:→ qazsd: 回楼上,是私有网域供连线用的网址,非public IP 12/06 00:20
22F:→ anecam: 80 server 改成location ~ /form {return 301 URL; }??? 12/08 21:24
23F:→ anecam: 後来只细看你是用http连不是https 12/08 21:24