Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

部署到服务器后,使用nginx端口转发后发现所有的按钮全都链接超时了 #155

Closed
Week888 opened this issue Mar 30, 2023 · 18 comments

Comments

@Week888
Copy link

Week888 commented Mar 30, 2023

已经通过DNS解析将<域名>解析到服务器IP上
只是通过nginx简单的把80端口的请求转发到了这个python工程启动设置的端口(5566)上。
在浏览器输入<域名>可以访问主页面,但发现点击任何按钮都是超时的。
如果在浏览器内输入域名:5566则一切正常。
image

nginx配置如下图
image

请有经验的朋友帮下忙 感谢!

@knigth95
Copy link

想问一下,如何使用ip访问,后台nohup挂起后无法在控制台获取公用url的域名地址,使用ip端口进入链接超时

@Week888
Copy link
Author

Week888 commented Mar 30, 2023

想问一下,如何使用ip访问,后台nohup挂起后无法在控制台获取公用url的域名地址,使用ip端口进入链接超时

没有听懂,运行后直接用ip访问就行

@knigth95
Copy link

想问一下,如何使用ip访问,后台nohup挂起后无法在控制台获取公用url的域名地址,使用ip端口进入链接超时

没有听懂,运行后直接用ip访问就行

可能是我服务器端口出了问题,我设置的端口无法访问,现在可以访问了,但是提交东西会显示error

@mengfanjie95
Copy link

你好,请问问题解决了吗,我也是用的nginx代理,也是可以打开界面但是使用具体功能的时候报错error,另一个gradio的地址就可以正常使用

@Week888
Copy link
Author

Week888 commented Mar 30, 2023

image

解决了,需要 为 websocket配置参数

@binary-husky
Copy link
Owner

和websocket有关吧

@colin4k
Copy link

colin4k commented Mar 31, 2023

发现只要设置密码,局域网访问就会connection error,

@tanghcn
Copy link

tanghcn commented Mar 31, 2023

发现只要设置密码,局域网访问就会connection error,
我测试也遇到这个情况

@RexWzh
Copy link

RexWzh commented Apr 1, 2023

image

解决了,需要 为 websocket配置参数

尝试了官方 wiki 的这个,没有成功。。。请问你这段代码是在哪里找到(试了好像也没效果

map $http_upgrade $connection_upgrade {
	default upgrade;
	'' close;
}

upstream my_chataca {
	server 127.0.0.1:<端口>;
}

server {
	listen 80;
	listen [::]:80;
	server_name <域名>;

	location / {
		proxy_pass http://my_chataca;
		proxy_set_header Host $host;
		proxy_set_header X-Real-IP $remote_addr;
		proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
		proxy_set_header Upgrade $http_upgrade;
		proxy_set_header Connection $connection_upgrade;
	}
}

@RexWzh
Copy link

RexWzh commented Apr 1, 2023

个人在韩区服务器部署的服务,直接用 git clone 部署,目前情况:

  1. 不设置密码,只用 IP/域名 + 端口能够访问
  2. 设置密码,IP + 端口也不能访问
  3. 不设置密码/设置密码,域名 + 重定向访问不了,尝试了下方配置
    map $http_upgrade $connection_upgrade {
        default keep-alive;
        '' upgrade;
    }
    
    server {
        listen 80;
        listen [::]:80;
        server_name <域名>;
    
        location / {
    	    proxy_pass http://localhost:2333/;
    	    proxy_set_header Host $host;
                proxy_set_header X-Real-IP $remote_addr;
    	    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    	    proxy_set_header Upgrade $http_upgrade;
    	    proxy_set_header Connection $connection_upgrade;
        }
    }

问题应该有两个:重定向问题和密码问题。

@ATPs
Copy link

ATPs commented Apr 1, 2023

同样没有成功。

@ATPs
Copy link

ATPs commented Apr 2, 2023

终于成功部署了。

像上面写的:

nginx 配置
在/etc/nginx/conf.d 文件夹里,新建一个文件,例如
your_domain_url.conf的文件。your_domain_url就是你的域名,可以是二级域名。如:happy.ppimage.net

内容为:

server {
        listen 80;
        server_name your_domain_url;   # 请填入你设定的域名
        access_log off;
        error_log off;
        location / {
                proxy_pass http://127.0.0.1:8001;   # 注意端口号
                proxy_redirect off;
                proxy_set_header Host $host;
                proxy_set_header X-Real-IP $remote_addr;
                proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
                proxy_set_header Upgrade $http_upgrade;         # Websocket配置
                proxy_set_header Connection $connection_upgrade;                #Websocket配置
                proxy_max_temp_file_size 0;
                client_max_body_size 10m;
                client_body_buffer_size 128k;
                proxy_connect_timeout 90;
                proxy_send_timeout 90;
                proxy_read_timeout 90;
                proxy_buffer_size 4k;
                proxy_buffers 4 32k;
                proxy_busy_buffers_size 64k;
                proxy_temp_file_write_size 64k;
        }
}

在上级目录里 编辑 /etc/nginx/nginx.conf,配置类似

user nginx;
worker_processes auto;
error_log /var/log/nginx/error.log;
pid /run/nginx.pid;

# Load dynamic modules. See /usr/share/doc/nginx/README.dynamic.
include /usr/share/nginx/modules/*.conf;

events {
    worker_connections 1024;
}

http {
    log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
                      '$status $body_bytes_sent "$http_referer" '
                      '"$http_user_agent" "$http_x_forwarded_for"';

    access_log  /var/log/nginx/access.log  main;
    server_tokens off;

    sendfile            on;
    tcp_nopush          on;
    tcp_nodelay         on;
    keepalive_timeout   65;
    types_hash_max_size 2048;
    gzip                on;

    include             /etc/nginx/mime.types;
    default_type        application/octet-stream;

    # Load modular configuration files from the /etc/nginx/conf.d directory.
    # See http://nginx.org/en/docs/ngx_core_module.html#include
    # for more information.
    include /etc/nginx/conf.d/*.conf;

    map $http_upgrade $connection_upgrade {
        default upgrade;
        '' close;
    }

}

主要是添加了

    map $http_upgrade $connection_upgrade {
        default upgrade;
        '' close;
    }

然后就可以通过域名访问了。注意,这里端口是80,不是443.

我是域名用cloudflare解析的。

没有开启ssl.

这里有教程

https://defunctions.com/cdn/http_to_https_by_cf.html

可以“使用CloudFlare将不配置SSL的http源站转换成https”

@z727354123
Copy link

个人在韩区服务器部署的服务,直接用 git clone 部署,目前情况:

  1. 不设置密码,只用 IP/域名 + 端口能够访问
  2. 设置密码,IP + 端口也不能访问
  3. 不设置密码/设置密码,域名 + 重定向访问不了,尝试了下方配置
    map $http_upgrade $connection_upgrade {
        default keep-alive;
        '' upgrade;
    }
    
    server {
        listen 80;
        listen [::]:80;
        server_name <域名>;
    
        location / {
    	    proxy_pass http://localhost:2333/;
    	    proxy_set_header Host $host;
                proxy_set_header X-Real-IP $remote_addr;
    	    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    	    proxy_set_header Upgrade $http_upgrade;
    	    proxy_set_header Connection $connection_upgrade;
        }
    }

问题应该有两个:重定向问题和密码问题。

-- 密码问题应该是 gradio 在 http 下 ws 问题, 加了证书 变成 wss 应该没事,
gradio-issues

-- 我修改了 routes.py 就好了, docker 我不是很熟, 粗略修改, 但是对我有效

  1. 进入容器
docker exec -it xxx /bin/bash 
  1. 修改文件 routes.py
sed -i s/websocket\.cookies\.get\(\"access-token\"\)/websocket.cookies.get\(\"access-token-unsecure\"\)/g  /usr/local/lib/python3.11/site-packages/gradio/routes.py
  1. 重启容器
docker restart xxx

@gptbert
Copy link

gptbert commented Apr 3, 2023

#155 (comment)

使用CloudFlare将不配置SSL的http源站转换成https,按照这个方法搞定了,非常感谢!

@blacksino
Copy link

blacksino commented May 10, 2023

你好,我在本地运行了两个带密码的webui的实例,分别运行在7861和7862,现在我想通过nginx实现负载均衡,发现无法登陆,以下是我nginx的配置文件:

http {

    upstream backend
    {
        server localhost:7861;
        server localhost:7862;
     }
    server
    {
        listen 80;
        server_name localhost;
        location / {
            proxy_pass http://backend;
            proxy_set_header Host $host;
            proxy_set_header X-Real-IP $remote_addr;
            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
            proxy_set_header Upgrade $http_upgrade;         # Websocket配置
            proxy_set_header Connection $connection_upgrade;

     }
    }
    map $http_upgrade $connection_upgrade
    {
        default upgrade;
        '' close;
    }
}

,而nginx错误日志是:

2023/05/10 16:04:46 [error] 22657#22657: *221 connect() failed (111: Connection refused) while connecting to upstream, client: 10.190.67.97, server: localhost, request: "POST /internal/progress HTTP/1.1", upstream: "http://127.0.0.1:7862/internal/progress", host: "10.12.43.140:8080", referrer: "http://10.12.43.140:8080/?__theme=dark"
2023/05/10 16:04:58 [error] 22657#22657: *221 connect() failed (111: Connection refused) while connecting to upstream, client: 10.190.67.97, server: localhost, request: "POST /internal/progress HTTP/1.1", upstream: "http://127.0.0.1:7861/internal/progress", host: "10.12.43.140:8080", referrer: "http://10.12.43.140:8080/?__theme=dark"
2023/05/10 16:04:58 [error] 22657#22657: *221 connect() failed (111: Connection refused) while connecting to upstream, client: 10.190.67.97, server: localhost, request: "POST /internal/progress HTTP/1.1", upstream: "http://127.0.0.1:7862/internal/progress", host: "10.12.43.140:8080", referrer: "http://10.12.43.140:8080/?__theme=dark"
2023/05/10 16:05:00 [error] 22657#22657: *221 no live upstreams while connecting to upstream, client: 10.190.67.97, server: localhost, request: "POST /internal/progress HTTP/1.1", upstream: "http://backend/internal/progress", host: "10.12.43.140:8080", referrer: "http://10.12.43.140:8080/?__theme=dark"
2023/05/10 16:05:03 [error] 22657#22657: *221 no live upstreams while connecting to upstream, client: 10.190.67.97, server: localhost, request: "POST /internal/progress HTTP/1.1", upstream: "http://backend/internal/progress", host: "10.12.43.140:8080", referrer: "http://10.12.43.140:8080/?__theme=dark"
2023/05/10 16:05:09 [error] 22657#22657: *221 connect() failed (111: Connection refused) while connecting to upstream, client: 10.190.67.97, server: localhost, request: "POST /internal/progress HTTP/1.1", upstream: "http://127.0.0.1:7861/internal/progress", host: "10.12.43.140:8080", referrer: "http://10.12.43.140:8080/?__theme=dark"
2023/05/10 16:05:23 [error] 22657#22657: *221 connect() failed (111: Connection refused) while connecting to upstream, client: 10.190.67.97, server: localhost, request: "POST /internal/progress HTTP/1.1", upstream: "http://127.0.0.1:7861/internal/progress", host: "10.12.43.140:8080", referrer: "http://10.12.43.140:8080/?__theme=dark"

请问各位大佬如何解决?

@jasonliu222
Copy link

已经通过DNS解析将<域名>解析到服务器IP上 只是通过nginx简单的把80端口的请求转发到了这个python工程启动设置的端口(5566)上。 在浏览器输入<域名>可以访问主页面,但发现点击任何按钮都是超时的。 如果在浏览器内输入域名:5566则一切正常。 image

nginx配置如下图 image

请有经验的朋友帮下忙 感谢!

你用了反代,填的通道就不是你的宿主机IP了,直接用http://127.0.0.1:8001; # 注意端口号
或者localhost就行

@jasonliu222
Copy link

你好,我在本地运行了两个带密码的webui的实例,分别运行在7861和7862,现在我想通过nginx实现负载均衡,发现无法登陆,以下是我nginx的配置文件:

http {

    upstream backend
    {
        server localhost:7861;
        server localhost:7862;
     }
    server
    {
        listen 80;
        server_name localhost;
        location / {
            proxy_pass http://backend;
            proxy_set_header Host $host;
            proxy_set_header X-Real-IP $remote_addr;
            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
            proxy_set_header Upgrade $http_upgrade;         # Websocket配置
            proxy_set_header Connection $connection_upgrade;

     }
    }
    map $http_upgrade $connection_upgrade
    {
        default upgrade;
        '' close;
    }
}

,而nginx错误日志是:

2023/05/10 16:04:46 [error] 22657#22657: *221 connect() failed (111: Connection refused) while connecting to upstream, client: 10.190.67.97, server: localhost, request: "POST /internal/progress HTTP/1.1", upstream: "http://127.0.0.1:7862/internal/progress", host: "10.12.43.140:8080", referrer: "http://10.12.43.140:8080/?__theme=dark"
2023/05/10 16:04:58 [error] 22657#22657: *221 connect() failed (111: Connection refused) while connecting to upstream, client: 10.190.67.97, server: localhost, request: "POST /internal/progress HTTP/1.1", upstream: "http://127.0.0.1:7861/internal/progress", host: "10.12.43.140:8080", referrer: "http://10.12.43.140:8080/?__theme=dark"
2023/05/10 16:04:58 [error] 22657#22657: *221 connect() failed (111: Connection refused) while connecting to upstream, client: 10.190.67.97, server: localhost, request: "POST /internal/progress HTTP/1.1", upstream: "http://127.0.0.1:7862/internal/progress", host: "10.12.43.140:8080", referrer: "http://10.12.43.140:8080/?__theme=dark"
2023/05/10 16:05:00 [error] 22657#22657: *221 no live upstreams while connecting to upstream, client: 10.190.67.97, server: localhost, request: "POST /internal/progress HTTP/1.1", upstream: "http://backend/internal/progress", host: "10.12.43.140:8080", referrer: "http://10.12.43.140:8080/?__theme=dark"
2023/05/10 16:05:03 [error] 22657#22657: *221 no live upstreams while connecting to upstream, client: 10.190.67.97, server: localhost, request: "POST /internal/progress HTTP/1.1", upstream: "http://backend/internal/progress", host: "10.12.43.140:8080", referrer: "http://10.12.43.140:8080/?__theme=dark"
2023/05/10 16:05:09 [error] 22657#22657: *221 connect() failed (111: Connection refused) while connecting to upstream, client: 10.190.67.97, server: localhost, request: "POST /internal/progress HTTP/1.1", upstream: "http://127.0.0.1:7861/internal/progress", host: "10.12.43.140:8080", referrer: "http://10.12.43.140:8080/?__theme=dark"
2023/05/10 16:05:23 [error] 22657#22657: *221 connect() failed (111: Connection refused) while connecting to upstream, client: 10.190.67.97, server: localhost, request: "POST /internal/progress HTTP/1.1", upstream: "http://127.0.0.1:7861/internal/progress", host: "10.12.43.140:8080", referrer: "http://10.12.43.140:8080/?__theme=dark"

请问各位大佬如何解决?

看报错像是防火墙没开

@xwj216
Copy link

xwj216 commented May 20, 2024

找不到任何.tex文件: private_upload/helede/2024-05-20-05-01-40
上传文件优化时,出现这种提示,明明路径下有上传的文件呢

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests