Nginx配置多个域名
前言
解决Cookie
跨域请求的时候, 发现这样一个网站scripts.cmbuckley.co.uk, 它拥有无限的子域名, 比如a.scripts.cmbuckley.co.uk
、b.scripts.cmbuckley.co.uk
、hhhhh.scripts.cmbuckley.co.uk
.
实现思路
这里用本地环境测试, 在虚拟机搭建一个Nginx
服务器.Nginx
的server_name
在server
块里面配置, 用于配置基于名称的虚拟主机。
比如/etc/nginx/conf.d/default.conf
中配置的就是localhost
.
1 | server { |
我们修改hosts
, 把localhost
指向服务器的IP
, 然后访问http://localhost:80
.
1 | 192.168.94.189 localhost |
浏览器发送的请求头会携带一个Host
参数localhost
, Nginx
根据这个Host
将请求分发到名为localhost
的server
进行处理。
如果有多个server
, 则会按从上到下的顺序一个个匹配, 如果都匹配不到, 则默认交给第一个请求, 或者也可以指定default_server
.
各种server_name
server_name
支持精确匹配, 支持通配符匹配, 支持正则匹配
1 | server_name domain.com www.domain.com; |
很明显, 上面提到的无限子域名的网站, 是通过*.domain.com
的方式实现的.Nginx
配好后, 记得hosts
文件也要改, 手头没有域名, 就只能改hosts
了.