一、Nginx中虚拟主机的配置
1、基于域名的虚拟主机配置
1、修改宿主机的hosts文件(系统盘/windows/system32/driver/etc/HOSTS)
linux : vim /etc/hosts
格式: ip地址 域名
eg: 192.168.3.172 www.gerry.com
2、在nginx.conf文件中配置server段
server {listen 80;server_name www.gerry.com; # 域名区分location / {root html/gerry;index index.html;}}server {listen 80;server_name www.rm.com; # 域名区分location / {root html/rm;index index.html;}}
2. 基于端口号的虚拟主机配置
- 在nginx.conf文件中配置server端
```bash
server {
listen 80; # 端口区分
location / {
} }root html/gerry;index index.html;
server { listen 8080; # 端口区分 location / { root html/torey; # 需要在根目录创建文件夹和index.html文件才可以 index index.html; } }
<br /><a name="Wt1q6"></a>## 3 修复中文乱码```bashserver {listen 8080;charset utf-8; # 中文编码location /{root torey/html;index index.html index.htm;}}
备注:需要执行 /usr/local/nginx/sbin/nginx -s reload,另外html页面也需要更改,有缓存
4 基于IP的虚拟主机配置
添加网卡的IP别名
# 只要在这个ip段内就可以ifconfig ens33:1 192.168.3.202 broadcast 192.168.3.255 netmask 255.255.255.0 up
route add -host 192.168.3.202 dev ens33:1
ifconfig ens33:2 192.168.3.203 broadcast 192.168.3.255 netmask 255.255.255.0 up
route add -host 192.168.3.203 dev ens33:2
从另外一台服务器Ping 192.168.3.202和192.168.3.203两个IP,如果能够Ping通,则证明配置无误。但是,通过ifconfig和route配置的IP别名在服 务器重启后会消失,不过可以将这两条ifconng和route命令添加到/etc/rc.local文件中,让系统开机时自动运行,以下是相关命令:vi /etc/rc.local在文件末尾增加以下内容,然后保存即可
ifconfig ens33:1 192.168.3.202 broadcast 192.168.3.255 netmask 255.255.255.0 uproute add -host 192.168.3.202 dev ens33:1ifconfig ens33:2 192.168.3.203 broadcast 192.168.3.255 netmask 255.255.255.0 uproute add -host 192.168.3.203 dev ens33:2
修改配置文件做如下的Server段配置
server {listen 80;server_name 192.168.3.202;location / {root html/host1;index index.html;}}server {listen 80;server_name 192.168.3.203;location / {root html/host2;index index.html;}}
二、nginx中server_name的匹配顺序
前提:安装echo-nginx-module
echo-nginx-module:nginx中打印字符串的 模块
1、下载https://github.com/openresty/echo-nginx-module并解压到服务器上


2、进入nginx的安装目录,用下列命令进行配置和安装,(因为要加入新的模块,只能对nginx重新安装)
./configure --prefix=/usr/local/nginx --add-module=/usr/local/nginx_modules/echo-nginx-module-master


make -j4 && make install
加入echo-nginx-module 和 —with-http_stub_status_module —with-http_ssl_module 命令
./configure --prefix=/usr/local/nginx --with-http_stub_status_module --with-http_ssl_module --add-module=/usr/local/nginx_modules/echo-nginx-module-master
make -j4 && make install
1、最高优先级:完全匹配
首先,在nginx.conf中创建2个server,1个完全匹配,1个通配符匹配
通配符server放在最前,以证明完全匹配的优先级与配置顺序无关
需要在Hosts文件中做如下配置:
vim /etc/hosts
127.0.0.1 ddd.cn
127.0.0.1 aaa.cn
server {listen 80;server_name *.cn;location / {default_type text/html;echo "通配符在前";}}server {listen 80;server_name ddd.cn;location / {default_type text/html;echo "完全匹配";}}
2、第二优先级:通配符在前
server {listen 80;server_name ddd.*;location / {default_type text/html;echo "通配符在后";}}server {listen 80;server_name *.cn;location / {default_type text/html;echo "通配符在前";}}
3、第三优先级:通配符在后
server {listen 80;server_name ~^\w+\.cn$;location / {default_type text/html;echo "正则匹配";}}server {listen 80;server_name ddd.*;location / {default_type text/html;echo "通配符在后";}}
4、listen配置项中default的影响
server {listen 80;server_name ~^\w+\.cn$;location / {default_type text/html;echo "正则匹配";}}server {listen 80;server_name dddd.xxx;location / {default_type text/html;echo "不匹配";}}server {listen 80 default;server_name haha.xxx;location / {default_type text/html;echo "不匹配找Listen Default";}}
nginx常用命令
查看nginx是否启动
ps -ef | grep nginx

[root@hecs-x-xlarge-2-linux-20200930155506 ~]# ps -ef | grep nginx
root 2006 1 0 Oct28 ? 00:00:00 nginx: master process /usr/local/nginx/sbin/nginx
nobody 3220 2006 0 Oct28 ? 00:00:26 nginx: worker process
root 4684 4664 0 21:32 pts/3 00:00:00 grep —color=auto nginx
[root@hecs-x-xlarge-2-linux-20200930155506 ~]#

