nginx 一端口多网站代理

Posted 长虹剑

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了nginx 一端口多网站代理相关的知识,希望对你有一定的参考价值。

起因:服务器只留了一个端口可以访问,想搭建多个网站

参考资料

服务器上部署多个Web应用
nginx配置多个域名使用同一个端口 # 该方法没有仔细尝试,不知道适不适合我的情况

Nginx代理proxy pass配置去除前缀

安装配置

conda install -c anaconda nginx
nginx -t
# anaconda3/etc/nginx/nginx.conf
#apt-get install psmisc
killall nginx
nginx
# 或者使用 service nginx xxx

killall nginx && nginx

配置文件

user  root;
worker_processes  1;
error_log  /home/xxx/tmp/nginxlog/logs/error.log;
error_log  /home/xxx/tmp/nginxlog/logs/notice.log  notice;
error_log  /home/xxx/tmp/nginxlog/logs/info.log  info;
pid         /home/xxx/tmp/nginxlog/logs/nginx.pid;


events {
    worker_connections  1024;
}

http {
    include       mime.types;
    default_type  application/octet-stream;

    #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  logs/access.log  main;

    sendfile        on;
    #tcp_nopush     on;

    #keepalive_timeout  0;
    keepalive_timeout  65;
	upstream webrb{
        #server 0.0.0.0:4567;
        server 127.0.0.1:4567;
    }

    upstream webpy{
        server 127.0.0.1:8089;
    }

	server {
        listen       8888;
        server_name  localhost;
        server_name_in_redirect off;
        proxy_set_header Host $host:$server_port;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header REMOTE-HOST $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        #charset koi8-r;
        charset utf-8;
        proxy_connect_timeout 180000;
        proxy_send_timeout 180000;
        proxy_read_timeout 180000;

        #使用location对不同请求做相应处理
        location /webrb {
            proxy_pass http://webrb/;
            #proxy_pass http://127.0.0.1:4567;
        }
        location /webrb2 {
            proxy_pass http://webrb/;
            #proxy_pass http://127.0.0.1:4567;
        }
        location /webpy {
            proxy_pass http://webpy/;
            #proxy_pass http://127.0.0.1:8089;
        }
	}
}
	

api

proxy_set_header: 给上游服务器发的
add_header: 给浏览器看的

rewrite 修改请求url,然后决定干什么
具体 last: 再次location; break: 本次直接往下走; redirect, permanent 重定向.
但是后两者会导致响应的location改变,最终自动加上了端口

一个域名代理多个网站,避免uri资源冲突

受工作影响,服务器只留了一个代理域名,而且只支持一个端口,现在希望能显示本地多个网站,通过在url后面加入 /webn 实现。

配置jupyter

jupyter转发

当然也可以启动配置

jupyter notebook --notebook-dir=/home/xxxxx/.jupyter --ip=0.0.0.0 --port=6000 --allow-root --NotebookApp.password=sha1:xxxxxx --NotebookApp.base_url='/jupyter'

有了上面的知识,配置 jupyter 非常简单 [部分代码]

client_max_body_size    1000g; # 这个坑了很久,nginx默认有限制
location /jupyter {
            proxy_pass http://s_jupyter;
          }

配置 flask

add-a-prefix-to-all-flask-routes
貌似使用 uwsig 启动可以直接设置 APPLICATION_ROOT
可以搜索Flask路由添加前缀看是否有想要的答案
我的 web 比较特殊,最终没有成功,因此我直接将其放到了 / 下

location /webpy {
             proxy_pass http://s_webpy;
}

其他网站

其实一般的网站都比较简单,没有登录系统,也不会从/ 请求,因此直接配置就行

location /webrb/ {
            proxy_pass http://s_webrb/;
        }

常用的有:

http.server

python -m http.server 端口号

streamlit

streamlit run 1.test.py --server.port 端口号

我这里需要如下的配置,否则一直是 please wait……
补充:后面我发现它过1m会变好,但有时候刷新又不行,按下面的配置就第一次不行,后面都还可以
这个链接可能有帮助
或者这个
~/.streamlit/config.toml

[browser]
serverAddress = "0.0.0.0"

[server]
headless = true
enableCORS = false
enableXsrfProtection = false

不想研究了,nginx 配置我是如下的

location /5551/ {
            proxy_pass http://127.0.0.1:5551/;
            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 X-Forwarded-Proto $scheme;

            proxy_http_version 1.1;
            proxy_set_header Upgrade $http_upgrade;
            proxy_set_header Connection "Upgrade";
            proxy_read_timeout 2h;
        }

以上是关于nginx 一端口多网站代理的主要内容,如果未能解决你的问题,请参考以下文章

用Nginx反向代理实现多网站共用80端口

nginx如何配置多IP的HTTP正向代理?

nginx反向代理-多端口映射

nginx代理简单配置实现修改网站域名

Apache的网站,使用Nginx进行反向代理(1个IP绑定多个域名,对应多个网站)解决方案

Nginx反向代理入门到实践