nginx 一端口多网站代理
Posted 长虹剑
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了nginx 一端口多网站代理相关的知识,希望对你有一定的参考价值。
起因:服务器只留了一个端口可以访问,想搭建多个网站
参考资料
服务器上部署多个Web应用
nginx配置多个域名使用同一个端口 # 该方法没有仔细尝试,不知道适不适合我的情况
安装配置
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 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 一端口多网站代理的主要内容,如果未能解决你的问题,请参考以下文章