nginx实现反向代理 配置多域名以及多端口号

Posted panchanggui

tags:

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

多个服务部署在同一个服务器,使用不同的端口。

 

一、思考过程

  1. 如果不想带上端口号,就只能访问 80 或 443 端口。
  2. 可以用过二级目录区分服务,通过反向代理转发到不同的 Server。
  3. 可以用过子域名区分服务,通过反向代理转发到不同的 Server。

二、方案评估

  1. 对于不带端口号访问,以我目前的经验来看,找不到其它更好的方法,只能使用 80 或 443 端口。
  2. 使用二级目录区分服务,可行性很大。
    • 能通过二级目录名,明确区分服务。
    • 可是和直接使用端口号差别不大,只是把辨别服务的方法,从端口号变成了二级目录名。
    • 可能导致 url 过长。
    • 还是没有什么美观性。
  3. 使用子域名区分服务,可行性与二级目录相差无几。
    • 能通过子域名,明确区分服务。
    • 具有一定的美观性。

三、实践操作

使用子域名区分服务 的方式,然后使用 nginx 做反向代理,分发到不同的端口。

1、找到nginx的配置文件

  打开nginx的配置文件,打开  /安装路径/conf/nginx.conf,进行配置

2、修改配置

server {

        listen       80;

        server_name  *.abc.com;

        if ($http_host ~* "^(.*?).abc.com$") {    #正则表达式

                set $domain $1;                     #设置变量
        }


        location / {

            if ($domain ~* "shop") {

               proxy_pass http://abc.com:3001;      #域名中有shop,转发到3001端口

            }

            if ($domain ~* "mail") {

               proxy_pass http://abc.com:3002;      #域名中有mail,转发到3002端口

            }


            tcp_nodelay     on;

            proxy_set_header Host            $host;

            proxy_set_header X-Real-IP       $remote_addr;

            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;

            #以上三行,目的是将代理服务器收到的用户的信息传到真实服务器上


            root   html;

            index  index.html index.htm;            #默认情况

        }

}

  

 

 

 

 

 

 

个人博客 wordpress + docker 搭建

以上是关于nginx实现反向代理 配置多域名以及多端口号的主要内容,如果未能解决你的问题,请参考以下文章

nginx的反向代理配置

nginx串联(一台反向代理,一台分发)引起问题

Tomcat/Jetty + Nginx(配置反向代理)获取客户端真实IP域名协议端口

如何直接通过域名访问页面,无需添加端口号(nginx反向代理实现直接域名访问)

nginx 80端口反向代理多个域名,怎样隐藏端口的

nginx 80端口反向代理多个域名,怎样隐藏端口的