一、虚拟主机的概念
1.什么是虚拟主机
虚拟主机,就是把一台物理服务器划分成多个 “虚拟” 的服务器,这样我们的一台物理服务器就可以当做多个服务器来使用,从而可以配置多个网站。Nginx 提供虚拟主机的功能,就是为了让我们不需要安装多个 Nginx,就可以运行多个域名不同的网站。
每台虚拟主机都可以是一个独立的网站,可以具有独立的域名,具有完整的Intemet服务器功能(WWW、FTP、Email等),同一台主机上的虚拟主机之间是完全独立的。从网站访问者来看,每一台虚拟主机和一台独立的主机完全一样。
在Nginx下,一个 server 标签就是一个虚拟主机。nginx 的虚拟主机就是通过主配置文件 nginx.conf 中 server 节点指定的,想要设置多个虚拟主机,配置多个server节点即可。
2.配置虚拟主机的方法
配置虚拟主机有三种方法:
- 基于域名的虚拟主机:不同的域名、相同的IP(此方式应用最广泛)。
- 基于IP地址的虚拟主机:不同的域名、不同的IP ( 需要加网络接口 ,应用的不广泛), 基于IP地址。
- 基于端口的虚拟主机:不使用域名、IP来区分不同站点的内容,而是用不同的TCP端口号。
二、编译安装Nginx
1.安装准备
2.安装依赖包
yum -y install gcc pcre-devel openssl-devel zlib-devel openssl openssl-devel
3.新建nginx用户便于管理
useradd -M -s /sbin/nologin nginx
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
5.修改文件权限
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/
7.检查、启动、重启、停止nginx服务
检查、启动nginx服务
多种方式查看nginx的PID号
停止nginx服务
重载nginx服务
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服务