需求想的是,在访问 test.cc/sss 的时候转到 http://localhost:8001 地址
其中:
报错信息
2020/11/25 13:43:56 [error] 7#7: *3 connect() failed (111: Connection refused) while connecting to upstream, client: 172.19.0.1, server: test.cc, request: "GET /sss/list HTTP/1.1", upstream: "http://127.0.0.1:8001/sss/list", host: "test.cc"
nginx.conf
upstream websocket {
	ip_hash;
	server 127.0.0.1:3101 weight=1 max_fails=2 fail_timeout=30s;
	server 127.0.0.1:3102 weight=1 max_fails=2 fail_timeout=30s;
	server 127.0.0.1:3103 weight=1 max_fails=2 fail_timeout=30s;
}
server {
	listen 80;
	server_name test.cc;
	location ~ /sss/ {
		proxy_pass http://localhost:8001;
	}
}
|      1riccox      2020-11-25 23:40:45 +08:00 via iPhone 你这个写法,访问 test.cc/sss 实际上会反代到 localist:8001/sss | 
|  |      2kidlj      2020-11-26 00:09:21 +08:00 via iPhone SELinux 关掉了吗? # sestatus 查看。 | 
|      437Y37      2020-11-26 08:15:34 +08:00 server 段还有其他 location 规则干扰了吧 | 
|  |      5ik      2020-11-26 08:15:59 +08:00 via iPhone 关闭 selinux      location ~ /sss/ 改成 location ~ /sss | 
|      7zm8m93Q1e5otOC69      2020-11-26 08:27:02 +08:00 建议使用二级域名。。 | 
|      8zm8m93Q1e5otOC69      2020-11-26 08:29:32 +08:00 或者这样试试 location ^~/sss/ { rewrite ^/sss/(.*)$ /$1 break; proxy_pass http://127.0.0.1:8081; } | 
|  |      9zliea      2020-11-26 08:47:06 +08:00 偷偷的问是不是 docker | 
|      10todd7zhang      2020-11-26 08:54:02 +08:00 如果是 Django 的话,可以尝试看看是不是 ALLOWED_HOSTS 的问题 | 
|      11Kirsk      2020-11-26 09:24:42 +08:00 via Android 看一楼回复 location /sss/ { proxy_pass http://localhost:8001 | 
|      13qwer666df OP @ztechstack #9 对是 docket @lrvinye #1 但是我本地 hosts 里面 localhost 也指向到了 127.0.0.1 @lpts007 #3 8001 端口能直接访问没啥问题的 | 
|  |      15zliea      2020-11-26 12:27:18 +08:00 docker 的话,nginx 容器内部访问 127.0.0.1 是访问 nginx 容器自身; 如果需要访问 python 容器的话: 1. 在同一 docker 的 network 里,可以使用[python 容器名称]:[python 服务端口]。 2. 或者使用[宿主机 IP]:[python 容器映射宿主机端口]。 | 
|      17qwer666df OP @ztechstack #15 对, 我早上发现了, 也就是访问 nginx 的去了,  不是我的本机, 所以一直链接不上,  你说的这个方案.. 我还不太熟悉, 打算先看看 docker 在研究研究... 蛋疼 | 
|  |      18ziwen1943      2020-11-26 17:38:58 +08:00 这个问题大概率是 docker 引起的,如果使用 docker 的话,nginx 容器代理应该代理 python 容器名( docker 子网访问使用容器名,加对应端口,127.0.0.1 只是在 nginx 本容器内访问,) 一个简单的方法是,先用 python 的 debug 方法直接监听 0.0.0.0 ( ALLOW_HOST ),测试通过后再加 nginx 代理,而且这样代理还不行,应该把 python 容器的 Django 项目静态文件通过映射传递或者容器继承文件,让 nginx 来代理所有静态文件和 api,django 真正变成后端,不负责静态文件的路由和转发,django 的效率更高。 |