使用 Nginx 实现域名解析到不同端口的应用

作为个人网站的服务器,一般都是一台。上面部署了各种应用,都是不同的端口。但是域名只能解析到80端口,而且如果你使用隐形URL转发的话,又需要另外加钱(TX 的就是几百块一条....),这就很尴尬了。另一种显性URL又会直接301跳转,体验非常不好。这可如何是好呢?

这就需要用到Nginx做反向代理了。什么是反向代理?我们先来看一下解释:

在计算机网络中,反向代理是[代理服务器]的一种。服务器根据客户端的请求,从其关系的一组或多组后端[服务器](如[Web服务器])上获取资源,然后再将这些资源返回给客户端,客户端只会得知反向代理的IP地址,而不知道在代理服务器后面的服务器簇的存在。

简单来说,就是你请求一个地址,但你并不知道内部到底是哪个服务提供的。对客户端来说,是屏蔽了后端实际服务了的。那这个怎么实现我们所需要的呢?

1. 配置子域名解析

比如我们现在有一个域名www.anyway.com和一个子域名m.anyway.com,在我们的域名解析中,通常会把主机记录为www@作为A记录类型解析到一台服务器 IP。如图:

解析记录

而现在我们要添加一条子域名的解析m.anyway.com:

子域名解析

这个时候,子域名还是会解析到默认的80端口所在的服务,接下来,就需要配置Nginx来实现了。

2. 配置 Nginx

假设你现在有一条server是解析到主应用:

server {
        listen 80;
        server_name  www.anyway.com;
        location / {
           proxy_pass http://127.0.0.1:8080;
        }
   }

即可再添加一条server指向你的另一个应用:

server {
        listen 80;
        server_name  m.anyway.com;
        location / {
           proxy_pass http://127.0.0.1:8082;
        }
   }

重启Nginx后,直接使用curl m.anyway.com即可看到效果。

同样的,在域名解析生效后,就可以直接通过m.anyway.com来访问8082端口的应用了。

你可能感兴趣的:(使用 Nginx 实现域名解析到不同端口的应用)