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改变,最终自动加上了端口

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

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

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

nginx反向代理-多端口映射

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

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

Nginx反向代理入门到实践