前端 用nginx配置多个二级域名

thelifeclown · October 27, 2019 · 131 hits

一个服务器上当然不可能只放一个服务,那么可以通过配置nginx服务器来实现转发,一般的有

  • 根据路径转发
  • 根据端口转发

但是这两种都有一定的局限性,因为用户不可能自己去记某某服务器上的什么端口下有什么服务,如http://www.helloyzy.cn:1998/test/api,这样的一个 URL 是不容易被牢记,(开发人员都容易忘)所以我们需要用nginx来配置二级域名

使用前提:

  • 一台(云)服务器
  • 一个域名
  • 已装好 nginx

欲实现效果

当访问www.helloyzy.cn,会转发到路径为/srv/www

当访问back.helloyzy.cn,会转发到路径为/srv/back

踩坑记录

一定要先给域名配置 DNS 解析,因为我们买来的域名是不带二级域名的,比如 helloyzy.cn,那如果要让别人能访问到www.helloyzy.cnback.helloyzy.cn,需要配置一个 DNS 解析(在服务器的管理界面有)
如果不配置,当你ping www.helloyzy.cn,将会提示unknown host

nignx 配置文件

一般情况下,所有的配置文件最好存在 /nginx/conf.d里,方便统一管理,在这地方,文件名就取二级域名的前缀,如 service_www.confservice_back.conf

service_www.conf:

123456
server { listen 80;  server_name www.helloyzy.cn;    root /srv/www;  index index.html index.htm; }

service_back.conf:

123456
server { listen 80;  server_name back.helloyzy.cn;   root /srv/back; index index.html index.htm; }

在这里,可能有几个疑问:

  • 为什么都是监听 80 端口,换做其他端口会怎么样?
  • 两个同时监听 80 端口,不会冲突吗?

问题一:

因为当仅仅输入网站 URL 时,浏览器会默认带上80端口,比如当我们访问www.baidu.com其实是访问的www.baidu.com:80,所以我们设置 80 端口后,用户只需要输入URL便能够访问到

问题二:

主要原因是因为不同域,第一个配置文件监听的是www.helloyzy.com的 80 端口,而第二个配置文件监听的是back.helloyzy.com的 80 端口,这两个会被转发到不同的服务上,所以不会互相冲突。

总结

nginx 可以让我们拥有更多的二级域名,这就更方便我们对服务器上起的服务进行一个更规范,更逻辑化的管理。而这些管理配置是和服务的代码是松耦合的,处于较高层,一个很好的nginx配置规划,将极大的减少我们在代码本身上花的时间,比如解决跨域代理转发提供静态服务等。

No Reply at the moment.
You need to Sign in before reply, if you don't have an account, please Sign up first.