一、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; } }
![image.png](https://cdn.nlark.com/yuque/0/2020/png/1511608/1603378795720-a70a5555-d399-4a1b-b2c5-fa13e8bc5b3c.png#align=left&display=inline&height=102&margin=%5Bobject%20Object%5D&name=image.png&originHeight=102&originWidth=569&size=11859&status=done&style=none&width=569)<br />![image.png](https://cdn.nlark.com/yuque/0/2020/png/1511608/1603378862467-052659ea-19ca-4337-9888-6f60378c38e3.png#align=left&display=inline&height=308&margin=%5Bobject%20Object%5D&name=image.png&originHeight=308&originWidth=583&size=23330&status=done&style=none&width=583)
<a name="Wt1q6"></a>
## 3 修复中文乱码
```bash
server {
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 ~]#