系统化的学习技术、研究技术而不是使用技术

Nginx实现二级域名转发

2018/10/18 16:48:17 | 浏览(15) 编程技术

如果我们需要一个服务器和域名同时为多个应用提供服务的话,可以使用以下方案:

  • 使用二级域名
  • 使用端口

使用端口,固然能够解决,但总觉得不是很方便。而使用二级域名就不存在这个问题。假如你有一个abc.com的域名,准备划分两个二级域名blog.abc.commail.abc.com来实现不同的功能,二者使用同一个IP和端口访问。

怎么实现呢?Niginx提供了一种请求转发的功能,通过监听指定的端口,并根据域名的不同将请求转发到对应的端口。

实现方式如下:

打开Niginx的配置文件nginx.conf,进行如下配置

server {
    listen       80;
    server_name  *.abc.com;

    if ($http_host ~* "^(.*?)\.abc\.com$") {    #正则表达式
        set $domain $1;                     #设置变量
    }

    location / {
        if ($domain ~* "blog") {
           proxy_pass http://abc.com:3001;      #域名中有blog,转发到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;            #默认情况
    }
}

验证配置:

命令行输入 /安装路径/sbin/nginx -t 查看nginx配置是否正确

命令行输入 /安装路径/sbin/nginx -s reload 重新加载nginx

如果相应端口上有对应的服务,那么我们的目的就达到了

留言(0)

给我留言