一个服务器上当然不可能只放一个服务,那么可以通过配置nginx
服务器来实现转发,一般的有
但是这两种都有一定的局限性,因为用户不可能自己去记某某服务器上的什么端口下有什么服务,如http://www.helloyzy.cn:1998/test/api
,这样的一个 URL 是不容易被牢记,(开发人员都容易忘)所以我们需要用nginx
来配置二级域名
。
使用前提:
欲实现效果
当访问www.helloyzy.cn
,会转发到路径为/srv/www
上
当访问back.helloyzy.cn
,会转发到路径为/srv/back
上
踩坑记录
一定要先给域名配置 DNS 解析,因为我们买来的域名是不带二级域名的,比如 helloyzy.cn,那如果要让别人能访问到
www.helloyzy.cn
和back.helloyzy.cn
,需要配置一个 DNS 解析(在服务器的管理界面有)
如果不配置,当你ping www.helloyzy.cn
,将会提示unknown host
一般情况下,所有的配置文件最好存在 /nginx/conf.d
里,方便统一管理,在这地方,文件名就取二级域名的前缀,如 service_www.conf
和 service_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; } |
在这里,可能有几个疑问:
问题一:
因为当仅仅输入网站 URL 时,浏览器会默认带上80
端口,比如当我们访问www.baidu.com
其实是访问的www.baidu.com:80
,所以我们设置 80 端口后,用户只需要输入URL
便能够访问到
问题二:
主要原因是因为不同域,第一个配置文件监听的是www.helloyzy.com
的 80 端口,而第二个配置文件监听的是back.helloyzy.com
的 80 端口,这两个会被转发到不同的服务上,所以不会互相冲突。
nginx 可以让我们拥有更多的二级域名,这就更方便我们对服务器上起的服务进行一个更规范,更逻辑化的管理。而这些管理配置是和服务的代码是松耦合
的,处于较高层,一个很好的nginx
配置规划,将极大的减少我们在代码本身上花的时间,比如解决跨域
,代理
,转发
,提供静态服务
等。