跳至主要內容
  • Hostloc 空間訪問刷分
  • 售賣場
  • 廣告位
  • 賣站?

4563博客

全新的繁體中文 WordPress 網站
  • 首頁
  • 请教 v2 大佬们以下 nginx 反向代理配置报错问题
未分類
22 11 月 2020

请教 v2 大佬们以下 nginx 反向代理配置报错问题

请教 v2 大佬们以下 nginx 反向代理配置报错问题

資深大佬 : qwer666df 4

需求想的是,在访问 test.cc/sss 的时候转到 http://localhost:8001 地址

其中:

  • http://127.0.0.1:8001/sss/list 这个地址是可以正常访问的
  • 防火墙已经关闭
  • 是 Python 项目, 不是 php 项目, , 因为 Google 了一圈发现都是说 php-fpm+nginx 的问题

报错信息

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;  } } 

大佬有話說 (20)

  • 資深大佬 : lrvinye

    你这个写法,访问 test.cc/sss 实际上会反代到 localist:8001/sss

  • 資深大佬 : kidlj

    SELinux 关掉了吗?

    # sestatus 查看。

  • 資深大佬 : lpts007

    postman 直接给 8001 发个请求试试,headers 的 Host 设置为 test.cc

  • 資深大佬 : 37Y37

    server 段还有其他 location 规则干扰了吧

  • 資深大佬 : ik

    关闭 selinux

    location ~ /sss/ 改成 location ~ /sss

  • 資深大佬 : ik

    @ik 先关 selinux 看看吧

  • 資深大佬 : beichenhpy

    建议使用二级域名。。

  • 資深大佬 : beichenhpy

    或者这样试试
    location ^~/sss/ {
    rewrite ^/sss/(.*)$ /$1 break;
    proxy_pass http://127.0.0.1:8081;
    }

  • 資深大佬 : ztechstack

    偷偷的问是不是 docker

  • 資深大佬 : todd7zhang

    如果是 Django 的话,可以尝试看看是不是 ALLOWED_HOSTS 的问题

  • 資深大佬 : Kirsk

    看一回复 location /sss/ {
    proxy_pass http://localhost:8001

  • 資深大佬 : Vibra

    @lrvinye 是的, 他应该写的是 proxy_pass http://websocket

  • 主 資深大佬 : qwer666df

    @ztechstack #9 对是 docket
    @lrvinye #1 但是我本地 hosts 里面 localhost 也指向到了 127.0.0.1
    @lpts007 #3 8001 端口能直接访问没啥问题的

  • 資深大佬 : lpts007

    @qwer666df 访问的时候 Host 设了吗

  • 資深大佬 : ztechstack

    docker 的话,nginx 容器内部访问 127.0.0.1 是访问 nginx 容器自身;
    如果需要访问 python 容器的话:
    1. 在同一 docker 的 network 里,可以使用[python 容器名称]:[python 服务端口]。
    2. 或者使用[宿主机 IP]:[python 容器映射宿主机端口]。

  • 主 資深大佬 : qwer666df

    @lpts007 #14 host 设置了应该是 docker 的问题

  • 主 資深大佬 : qwer666df

    @ztechstack #15 对, 我早上发现了, 也就是访问 nginx 的去了, 不是我的本机, 所以一直链接不上, 你说的这个方案.. 我还不太熟悉, 打算先看看 docker 在研究研究… 蛋疼

  • 資深大佬 : ziwen1943

    这个问题大概率是 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 的效率更高。

  • 資深大佬 : lrvinye

    @qwer666df 我的意思是 location 使用正则时将会把 location 获取的完整 uri 加到反代的地址后面,而使用普通匹配时则情况不一样,建议搜索 nginx 反代斜杠用法

  • 主 資深大佬 : qwer666df

    @lrvinye #19 谢谢大佬 学到了

    @ziwen1943 #18 恩恩, 应该是这个问题, 我一开始只是拿 Python 启动测试一把没想到 docker 折腾有点复杂, 现在先不折腾了,,, 还有我的 Python 是装在本机的也不能代理. 有点蛋疼, 谢谢大佬讲解

文章導覽

上一篇文章
下一篇文章

AD

其他操作

  • 登入
  • 訂閱網站內容的資訊提供
  • 訂閱留言的資訊提供
  • WordPress.org 台灣繁體中文

51la

4563博客

全新的繁體中文 WordPress 網站
返回頂端
本站採用 WordPress 建置 | 佈景主題採用 GretaThemes 所設計的 Memory
4563博客
  • Hostloc 空間訪問刷分
  • 售賣場
  • 廣告位
  • 賣站?
在這裡新增小工具