一、Nginx服务基础
Nginx(发音为 [engine x] )专为性能优化而开发,其最知名的优点是它的稳定性和低系统资源消耗,以及对 HTTP 并发连接的高处理能力(单台物理服务器可支持 30000 ~ 50000 个并发请求)。正因为如此,大量提供社交网络、新闻资讯、电子商务及虚拟主机等服务的企业纷纷选择 Nginx 来提供 Web 服务。
本节将介绍 Nginx 的安装配置方法。
二、Nginx 1.12安装及运行控制
- Nginx 安装文件可以从官方网站 http://www.nginx.org/ 下载。下面以稳定版 Nginx1.12.0 为例,介绍 Nginx 的安装和运行控制。
1.安装Nginx服务
(1)编译安装Nginx。
[root@localhost ~]# yum -y install pcre-devel zlib-devel 安装依赖
[root@localhost ~]# useradd -M -s /sbin/nologin nginx 创建一个名为nginx的用户
[root@localhost ~]# tar zxf nginx-1.12.0.tar.gz
[root@localhost ~]# cd nginx-1.12.0/
[root@localhost nginx-1.12.0]# ./configure --prefix=/usr/local/nginx --user=nginx --group=nginx --with-http_stub_status_module
[root@localhost nginx-1.12.0]# make
[root@localhost nginx-1.12.0]# make install
(2)为主程序nginx创建链接文件。
[root@localhost nginx-1.12.0]# ln -s /usr/local/nginx/sbin/nginx /usr/local/sbin/
[root@localhost nginx-1.12.0]# ls -l /usr/local/sbin/nginx
lrwxrwxrwx 1 root root 27 1月 9 13:54 /usr/local/sbin/nginx -> /usr/local/nginx/sbin/nginx
(3)Nginx的运行控制。
[root@localhost ~]# nginx -t 检查配置文件
[root@localhost ~]# nginx 启动nginx
[root@localhost ~]# netstat -anpt | grep nginx 查看nginx的端口号
[root@localhost ~]# yum -y install elinks 安装elinks工具
[root@localhost ~]# elinks http://localhost 用elinks工具访问nginx网页
(4)安装psmisc工具。
[root@localhost ~]# yum -y install psmisc 安装psmisc软件
[root@localhost ~]# killall -s HUP nginx 重载配置
[root@localhost ~]# killall -s QUIT nginx 退出进程
(5)使用Nginx服务脚本。
[root@localhost ~]# vim /etc/init.d/nginx
#!/bin/bash
#chkconfig: - 99 20
#description: Nginx Service Control Soript
PROG="/usr/local/nginx/sbin/nginx"
PIDF="/usr/local/nginx/logs/nginx.pid"
case "$1" in
start)
$PROG
;;
stop)
kill -s QUIT $(cat $PIDF)
;;
restart)
$0 stop
$0 start
;;
reload)
kill -s HUP $(cat $PIDF)
;;
*)
echo "Usage: $0 {start|stop|restart|reload}"
exit 1
esac
exit 0
(6)把nginx文件添加执行权限。
[root@localhost ~]# chmod +x /etc/init.d/nginx 添加权限
[root@localhost ~]# chkconfig --add nginx 添加为系统服务
[root@localhost ~]# systemctl status nginx 查看Nginx系统状态
2.修改nginx.conf配置文件
(1)配置文件nginx.conf,全局配置。
[root@localhost ~]# vim /usr/local/nginx/conf/nginx.conf
#user nobody; 运行用户
worker_processes 1; 工作进程数量
#error_log logs/error.log; 错误日志文件的位置
#error_log logs/error.log notice;
#error_log logs/error.log info;
#pid logs/nginx.pid; PID文件的位置
(2)I/O事件配置。
[root@localhost ~]# vim /usr/local/nginx/conf/nginx.conf
events {
use epoll; 使用epoll模型
worker_connections 4096; 每进程处理4096个连接
}
(3)HTTP配置。
[root@localhost ~]# vim /usr/local/nginx/conf/nginx.conf
http {
include mime.types;
default_type application/octet-stream;
log_format main '$remote_addr - $remote_user [$time_local] "$request" '
'$status $body_bytes_sent "$http_referer" '
'"$http_user_agent" "$http_x_forwarded_for"';
access_log logs/access.log main; 访问日志位置
sendfile on; 开启高效传输文件模式
keepalive_timeout 65; 连接保持超时
server { Web服务的监听配置
listen 80; 监听端口号
server_name www.bdqn.com; 网站名称
charset utf-8; 网页的默认字符集
location / { 根目录配置
root html; 网站根目录的位置,相对于安装目录
index index.html index.htm; 默认首页
}
error_page 500 502 503 504 /50x.html; 内部错误的反馈页面
location = /50x.html { 错误页面配置
root html;
}
}
}
(4)Nginx的访问状态统计,用来反馈当前的Web访问情况。
[root@localhost ~]# vim /usr/local/nginx/conf/nginx.conf
index index.html index.htm; 在这条配置命令的下面添加,以下的配置命令
}
location /status {
stub_status on;
access_log off;
}
[root@localhost ~]# systemctl restart nginx 重启服务
- 新的配置生效以后,在浏览器访问Nginx服务器的/status网站位置,格式:服务器IP/status。
三、基于域名的虚拟Web主机
(1)配置DNS服务,使两个域名解析为同一IP地址(过程略)。
(2)准备网站目录及测试文件。
[root@localhost ~]# mkdir -p /var/www/bdqn
[root@localhost ~]# echo "<h1>www.bdqn.com</h1>" > /var/www/bdqn/index.html
[root@localhost ~]# mkdir -p /var/www/accp
[root@localhost ~]# echo "<h1>www.accp.com</h1>" > /var/www/accp/index.html
(3)调整nginx.conf配置文件。
[root@localhost ~]# vim /usr/local/nginx/conf/nginx.conf
http {
…… //省略部分信息
server {
listen 80;
server_name www.bdqn.com;
charset utf-8;
access_log logs/bdqn.access.log main;
location / {
root /var/www/bdqn;
index index.html index.php;
}
}
server {
listen 80;
server_name www.accp.com;
charset utf-8;
access_log logs/accp.access.log main;
location / {
root /var/www/accp;
index index.html index.php;
}
}
(4)重启服务。
[root@localhost ~]# systemctl restart nginx
四、基于端口的虚拟主机
(1)修改nginx.conf配置文件。
[root@localhost ~]# vim /usr/local/nginx/conf/nginx.conf
http {
…… //省略部分信息
server {
listen 192.168.112.50:90;
server_name www.bdqn.com;
charset utf-8;
access_log logs/bdqn.access.log main;
location / {
root /var/www/bdqn;
index index.html index.php;
}
}
server {
listen 192.168.112.50:100;
server_name www.accp.com;
charset utf-8;
access_log logs/accp.access.log main;
location / {
root /var/www/accp;
index index.html index.php;
}
}
(2)检测端口是否运行正常
[root@localhost ~]# nginx -t
nginx: the configuration file /usr/local/nginx/conf/nginx.conf syntax is ok
nginx: configuration file /usr/local/nginx/conf/nginx.conf test is successful
[root@localhost ~]# systemctl restart nginx 重启服务
[root@localhost ~]# ip addr show dev ens33 | grep inet
inet 192.168.112.50/24 brd 192.168.112.255 scope global noprefixroute ens33
inet 192.168.112.60/24 brd 192.168.112.255 scope global ens33:0
五、基于IP的虚拟主机
(1)再配置一个虚拟IP为192.168.112.60。
[root@localhost ~]# ifconfig ens33:0 192.168.112.60
[root@localhost ~]# ip addr show dev ens33 | grep inet
inet 192.168.112.50/24 brd 192.168.112.255 scope global noprefixroute ens33
inet 192.168.112.60/24 brd 192.168.112.255 scope global ens33:0
(2)修改nginx.conf配置文件
[root@localhost ~]# vim /usr/local/nginx/conf/nginx.conf
http {
…… //省略部分信息
server {
listen 192.168.112.50:80;
server_name www.bdqn.com;
charset utf-8;
access_log logs/bdqn.access.log main;
location / {
root /var/www/bdqn;
index index.html index.php;
}
}
server {
listen 192.168.112.60:80;
server_name www.accp.com;
charset utf-8;
access_log logs/accp.access.log main;
location / {
root /var/www/accp;
index index.html index.php;
}
}
(3)重启服务
[root@localhost ~]# systemctl restart nginx 重启服务