Nginx实现二级域名转发
如果我们需要一个服务器和域名同时为多个应用提供服务的话,可以使用以下方案:
- 使用二级域名
- 使用端口
使用端口,固然能够解决,但总觉得不是很方便。而使用二级域名就不存在这个问题。假如你有一个abc.com
的域名,准备划分两个二级域名blog.abc.com
和mail.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
如果相应端口上有对应的服务,那么我们的目的就达到了
最后更新于 2018/10/18 16:48:17
留言(0)