Nginx的虚拟主机

125 阅读4分钟

一、虚拟主机的概念

1.什么是虚拟主机

虚拟主机,就是把一台物理服务器划分成多个 “虚拟” 的服务器,这样我们的一台物理服务器就可以当做多个服务器来使用,从而可以配置多个网站。Nginx 提供虚拟主机的功能,就是为了让我们不需要安装多个 Nginx,就可以运行多个域名不同的网站。

每台虚拟主机都可以是一个独立的网站,可以具有独立的域名,具有完整的Intemet服务器功能(WWW、FTP、Email等),同一台主机上的虚拟主机之间是完全独立的。从网站访问者来看,每一台虚拟主机和一台独立的主机完全一样。

在Nginx下,一个 server 标签就是一个虚拟主机。nginx 的虚拟主机就是通过主配置文件 nginx.conf 中 server 节点指定的,想要设置多个虚拟主机,配置多个server节点即可。

2.配置虚拟主机的方法

配置虚拟主机有三种方法

  • 基于域名的虚拟主机:不同的域名、相同的IP(此方式应用最广泛)。
  • 基于IP地址的虚拟主机:不同的域名、不同的IP ( 需要加网络接口 ,应用的不广泛), 基于IP地址。
  • 基于端口的虚拟主机:不使用域名、IP来区分不同站点的内容,而是用不同的TCP端口号。

二、编译安装Nginx

1.安装准备

image.png

2.安装依赖包

yum -y install gcc pcre-devel openssl-devel zlib-devel openssl  openssl-devel

image.png

3.新建nginx用户便于管理

useradd -M -s /sbin/nologin nginx

image.png

4.切换到nginx-1.18.0,编译安装nginx

./configure --prefix=/apps/nginx \
--user=nginx \
--group=nginx \
--with-http_ssl_module \
--with-http_v2_module \
--with-http_realip_module \
--with-http_stub_status_module \
--with-http_gzip_static_module \
--with-pcre \
--with-stream \
--with-stream_ssl_module \
--with-stream_realip_module

image.png

image.png

5.修改文件权限

image.png

chown -R nginx.nginx /apps/nginx

conf:保存nginx所有的配置文件,其中nginx.conf是nginx服务器的最核心最主要的配置文件,其他的.conf则是用来配置nginx相关的功能的,例如fastcgi功能使用的是fastcgi.conf和fastcgi_params两个文件,配置文件一般都有个样板配置文件,是文件名.default结尾,使用的使用将其复制为并将default去掉即可。

html目录中保存了nginx服务器的web文件,但是可以更改为其他目录保存web文件,另外还有一个50x的web文件是默认的错误页面提示页面。

logs:用来保存nginx服务器的访问日志错误日志等日志,logs目录可以放在其他路径,比如/var/logs/nginx里面。

sbin:保存nginx二进制启动脚本,可以接受不同的参数以实现不同的功能。

6.将nginx的操作指令放入环境变量PATH的目录下

将nginx的可执行文件做个软链接,放入环境变量PATH的目录下,让系统识别nginx的操作指令。

ln -s /apps/nginx/sbin/nginx /usr/sbin/

image.png

7.检查、启动、重启、停止nginx服务

检查、启动nginx服务

image.png

多种方式查看nginx的PID号

image.png

停止nginx服务

image.png

重载nginx服务

image.png

8.创建Nginx自启动文件

#复制同一版本的nginx的yum安装生成的service文件

vim /usr/lib/systemd/system/nginx.service
#建立文件
[Unit]
Description=nginx - high performance web server
Documentation=http://nginx.org/en/docs/
After=network-online.target remote-fs.target nss-lookup.target
Wants=network-online.target
[Service]
Type=forking
PIDFile=/apps/nginx/logs/nginx.pid
#注意文件位置,如果不对 启动不了
ExecStart=/apps/nginx/sbin/nginx -c /apps/nginx/conf/nginx.conf
#注意启动文件位置
ExecReload=/bin/kill -s HUP $MAINPID
ExecStop=/bin/kill -s TERM $MAINPID
LimitNOFILE=100000

[Install]
WantedBy=multi-user.target

systemctl daemon-reload 
#重新加载配置

systemctl start nginx
#启动nginx服务

三、基于域名的Nginx虚拟主机

1.安装准备:编译安装Nginx

2.编写主配置文件

image.png

3.切换到nginx,创建conf.d目录,切换到conf.d目录

image.png

4.编写子配置文件pc.conf

image.png

5.检测语法

image.png

6.切换到data目录,创建lhey和lrj目录

image.png

7.在lhey和lrj目录中输出index.html文件:lhey lrj

image.png

8.切换到conf.d目录,重启nginx

image.png

9.切换到测试机,修改本地hosts文件,添加对应映射

image.png

10.测试

image.png

四、基于端口的Nginx虚拟主机

1.修改IP地址后面的端口即可

image.png

2.检测语法,重启nginx

image.png

3.测试

image.png

五、基于IP地址的Nginx虚拟主机

1.两个server块,设置不同的监听地址即可,其他跟基于域名都一样

image.png

2.添加虚拟网卡

image.png

3.检测语法,重启nginx

image.png

4.测试

image.png