Nginx service, main configuration file, web service monitoring, access statistics, Nginx virtual host

One, nginx

1.1 nginx is a high-performance, lightweight web service software

稳定性高
系统资源消耗低
对HTTP并发连接的处理能力高
单台物理服务器可支持30000~50000个并发请求

Two, compile and install nginx service

1、关闭防火墙,将安装nginx所需要的软件包拖到/opt目录下

systemctl stop firewalld
systemctl disable firewalld
setenforce 0
nginx-1.12.0.tar.gz    nginx-1.12.2.tar.gz 

Insert picture description here

2、安装依赖包
The configuration and operation of nginx need the support of pcre, zlib and other software packages, so these development packages need to be installed in order to provide the corresponding libraries and header files

yum -y install pcre-devel zlib-devel gcc gcc-c++ make

3、创建运行用户、组(nginx服务程序默认以nobody身份运行,建议为其下创建专门的用户账号,以便更准确的控制访问权限)

useradd -M -s /sbin/nologin nginx

4、编译安装nginx

cd /opt
tar zxvf nginx-1.12.0.tar.gz -C /opt/

cd nginx-1.12.0/
./configure \
--prefix=/usr/local/nginx \                  指定nginx的安装路径
--user=nginx \                                   指定用户名
--group=nginx \                                 指定组名   
--with-http_stub_status_module  启用http_stub_status_module模块以支持状态统计

make && make install

ln -s /usr/local/nginx/sbin/nginx /usr/local/sbin  让系统识别nginx的操作命令

Insert picture description here
Insert picture description here

5、检查、启动、重启、停止、nginx服务

nginx -t          检查配置文件是否配置正确
nginx     启动
cat /usr/local/nginx/logs/nginx.pid       查看nginx的PID号
kill -3 <PID号>              停止
kill -3 -s QUIT <PID号>
killall -3 nginx
killall -3 -s QUIT nginx
kill -l  <PID号>     重载
kill -s HUP <PID号>
killall -l nginx
killall -s HUP nginx
日志分隔,重新打开日志文件
kill -USR1 <PID号>
平滑升级
kill -USR2 <PID号>

6、添加nginx系统服务
method one:

vim /etc/init.d/nginx
#!/bin/bash
#chkconfig: - 99 20
#description:Nginx Service Control Script
COM="/usr/local/nginx/sbin/nginx"
PID="/usr/local/nginx/logs/nginx.pid"
case "$1" in
start)
   $COM
;;
STOP)
   kill -s QUIT $(cat $PID)
;;
restart)
   $0    stop
   $0    start
;;
reload)
    kill -s HUP $(cat $PID)
;;

*)
echo “Usage: $0 {
    
    start|stop|restart|reload}exit 1

esac
exit 0

chmod +x /etc/init.d/nginx
chkconfig --add nginx           添加为系统服务
systemctl stop nginx
systemctl start nginx

Method Two:

vim /lib/systend/system/nginx.service
[Unit]
Description=nginx
After=network.target
[Service]
Type=forking
PIDFile=/usr/local/nginx/logs/nginx.pid
ExecStart=/usr/local/nginx/sbin/nginx
ExecrReload=/bin/kill -s HUP $MAINPID
ExecrStop=/bin/kill -s QUIT $MAINPID
PrivateTmp=true
[Install]
WantedBy=multi-user.target

chmod 754 /lib/systemd/system/nginx.service
systemctl start nginx.service
systemctl enable nginx.service

Insert picture description here

2. Know the main configuration file nginx.conf of Nginx service

vim /usr/local/nginx/conf/nginx.conf

1、全局配置

#user nobody;                       运行用户,若编译时未指定则默认为nobody
worker_processes 1;                 
工作进程数量,可配置成服务器内核数* 2,如果网站访问量不大,一般设为1就够用了

#error_log logs/error.log;          错误日志文件的位置
#pid logs/nginx.pid;                PID文件的位置

2、I/0事件配置

events {
    
    
	use epoll;           
使用epoll模型, 2.6及以上版本的系统内核,建议使用epoll模型以提高性能

    worker_connections 4096;                  每个进程处理4096个连接
}
如提高每个进程的连接数还需执行"ulimit -n 65535"命令临时修改本地每个进程可以同时打开的最大文件数。

在Linux平台上,在进行高并发TCP连接处理时,最高的并发数量都要受到系统对用户单一进程同时可打开文件数量的限制(这是因为系统为每个TCP连接都要创建一个socket句柄,每个socket句柄同时也是一个文件句柄)。

可使用"ulimit -a"命令查看系统允许当前用户进程打开的文件数限制。

3、HTTP配置

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;
       
       此选项允许或禁止使用socket的TCP_CORK的选项(发送数据包前先缓存数据) ,此选项仅在使用sendfile的时候使用
       #tcp_nopush  on;
       
       连接保持超时时间,单位是秒
       #keepalive_timeout 0;
       keepalive_timeout 65;
       
       gzip模块设置,设置是否开启gzip压缩输出
       gzip on;

Three, Web service monitoring configuration

server {
    
    

    监听地址及端口
    listen 80;
    
    站点域名,可以有多个,用空格隔开
    server name www.xyw.com;
    
    网页的默认字符集
    charset utf-8;
    
    根目录配置
    location / {
    
    
    网站根目录的位置/usr/local/nginx/html
    root html;
    
    默认首页文件名
    index index.html index.php;
    
    内部错误的反馈页面
    error_page 500 502 503 504 /50x.html;
    
    错误页面配置
    location = /50x.html {
    
    
    root html;
    }
  }
}

日志格式设定

$remote_addr$http_x_forwarded_for用以记录客户端的ip地址;
$remote_user:用来记录客户端用户名称;
$time_local:用来记录访问时间与时区;
$request:用来记录请求的url与http协议;
$status:用来记录请求状态;成功是200;
$body_bytes_sent:记录发送给客户端文件主体内容大小;
$http_referer:用来记录从哪个页面链接访问过来的;
$http_user_agent:记录客户浏览器的相关信息;

Usually the web server is placed behind the reverse proxy, so that the client's IP address cannot be obtained. The IP address obtained through $remote_add is the IP address of the reverse proxy server. The reverse proxy server can add x_forwarded_for information to the http header information of the forwarding request to record the original client's IP address and the server address of the original client's request.

location常见配置指令

root、alias、 proxy_pass
root (根路径配置):请求www.xyw.com/test/1. jpg,会返回文件/usr/local/nginx/html/test/1.jpg
alias (别名配置):请求www.xyw.com/test/1.jpg,会返回文件/usr/local/nginx/html/1.jpg
proxy_pass (反向代理配置):
proxy_pass http://127.0.0.1:8080/;  会转发请求到http://127.0.0.1:8080/1.jpg
proxy_pass http://127.0.0.1:8080;  会转发请求到http://127.0.0.1:8080/test/1.jpg

Four, access status statistics configuration

1、先使用命令/usr/local/nginx/sbin/nginx -V 查看已安装的 Nginx 是否包含 HTTP_STUB_STATUS模块

2、修改nginx.conf配置文件,指定访问位置并添加stub status配置

cd /usr/local/nginx/conf
cp nginx.conf nginx.conf.bak
vim /usr/local/nginx/conf/nginx.conf
......
http {
    
    
.....
server {
    
    
listen 80;
server_name www.xyw.com
charset utf-8;
location / {
    
    
    root html;
    index index.html index.php;
}
添加stub_status配置
location /status {
    
                  访问位置为/status
stub_status on;               打开状态统计功能
access_log off;                关闭此位置的日志记录
     }
   }
}

Insert picture description here

3、重启服务,,访问测试

systemctl restart nginx

浏览器访问

http://192.168.238.20/status
                                                                                                   
Active connections:表示当前的活动连接数;
server accepts handled requests:表示已经处理的连接信息,三个数字依次表示已处理的连接数、成功的TCP握手次数、已处理的请求数。

Insert picture description here
Insert picture description here

Five, authorization-based access control

1、生成用户密码认证文件

yum install -y httpd-tools
htpasswd -c /usr/local/nginx/passwd.db zhangsan
chown nginx /usr/local/nginx/passwd.db
chmod 400 /usr/local/nginx/passwd.db

Insert picture description here

2、修改主配置文件相对应目录,添加认证配置项

vim /usr/local/nginx/conf/nginx.conf
......
server {
    
    
    location / {
    
    
    ......
    添加认证配置
    auth_basic "secret";
    auth_basic_user_file /usr/local/nginx/passwd.db;
    }
}

Insert picture description here

3、重启服务,访问测试

nginx -t
systemctl restart nginx

Insert picture description here
浏览器访问

http://192.168.238.20

Insert picture description here

Six, client-based access control

访问控制规则如下

deny IP/IP段:拒绝某个IP或IP段的客户端访问。
allow IP/IP段:允许某个IP或IP段的客户端访问。
规则从上往下执行,如匹配则停止,不再往下匹配。
vim /usr/local/nginx/conf/nginx.conf
.......
    server {
    
    
        location / {
    
    
            ......
            添加控制规则
            deny 192.168.238.200;        拒绝访问的客户端IP
            allow all;                   允许其它IP客户端访问
     }
}
systemctl restart nginx

Seven, domain-based nginx virtual host

1、为虚拟主机提供域名解析

echo "192.168.238.20 www.xyw.com www.benet.com" >> /etc/hosts

2、为虚拟主机准备网页文档

mkdir -p /var/www/html/benet
mkdir -p /var/www/html/xyw
echo "<h1>www.xyw.com<h1>" > /var/www/html/xyw/index.html
echo "<h1>www.benet.com<h1>" > /var/www/html/benet/index.html

3、修改Nginx的配置文件

vim /usr/local/nginx/conf/nginx.conf
.......
http {
    
    
......
server {
    
    
listen 80;
server_name www.xyw.com;          设置域名www.xyw.com
charset utf-8;
access_log logs/www.xyw.access.log;         设置日志名
location / {
    
    
	root /var/www/html/xyw;        设置www.xyw.com的工作目录
	index index.html index.php
    }
error_page 500 502 503 504 /50x.html;
location = 50x.html {
    
    
	root html;
    }
}

server {
    
    
listen 80;
server_name www.benet.com;          设置域名www.benet.com
charset utf-8;
access_log logs/www.benet.access.log;
location / {
    
    
	root /var/www/html/benet;
	index index.html index.php;
    }
error_page 500 502 503 504 /50x.html;
location = 50x.html {
    
    
	root html; 
    }
  }
}
systemctl restart nginx

Insert picture description here
Insert picture description here
Insert picture description here
Insert picture description here

浏览器访问

http://www.xyw.com
http://www.benet.com

Insert picture description here
Insert picture description here

Eight, IP-based nginx virtual host

ifconfig ens33:0 192.168.238.100 netmask 255.255.255.0

vim /usr/local/nginx/conf/nginx.conf
.......
http {
    
    
......
server {
    
    
listen 192.168.238.20:80;
server_name www.xyw.com;        设置监听地址192.168.238.20
charset utf-8;
access_log logs/www.xyw.access.log;         设置日志名
location / {
    
    
	root /var/www/html/xyw;        设置www.xyw.com的工作目录
	index index.html index.php
    }
error_page 500 502 503 504 /50x.html;
location = 50x.html {
    
    
	root html;
    }
}

server {
    
    
listen 192.168.238.100:8080;       设置监听地址192.168.238.100
server_name www.benet.com;          
charset utf-8;
access_log logs/www.benet.access.log;
location / {
    
    
	root /var/www/html/benet;
	index index.html index.php;
    }
error_page 500 502 503 504 /50x.html;
location = 50x.html {
    
    
	root html; 
    }
  }
}
systemctl restart nginx

Insert picture description here

浏览器访问

http://192.168.238.20
http://192.168.238.100:8080

Insert picture description here
Insert picture description here
Insert picture description here

Nine, port-based virtual host

vim /usr/local/nginx/conf/nginx.conf
.......
http {
    
    
......
server {
    
    
listen 192.168.238.20:8080;         设置监听8080端口
server_name www.xyw.com;          设置域名www.xyw.com
charset utf-8;
access_log logs/www.xyw.access.log;         设置日志名
location / {
    
    
	root /var/www/html/xyw;        设置www.xyw.com的工作目录
	index index.html index.php
    }
error_page 500 502 503 504 /50x.html;
location = 50x.html {
    
    
	root html;
    }
}

server {
    
    
listen 192.168.238.20:8888;        设置监听8888端口
server_name www.benet.com;          设置域名www.benet.com
charset utf-8;
access_log logs/www.benet.access.log;
location / {
    
    
	root /var/www/html/benet;
	index index.html index.php;
    }
error_page 500 502 503 504 /50x.html;
location = 50x.html {
    
    
	root html; 
    }
  }
}
systemctl restart nginx

Insert picture description here
Insert picture description here
Insert picture description here

浏览器访问

http://192.168.238.20:8080
http://192.168.238.20:8888

Insert picture description here
Insert picture description here

Guess you like

Origin blog.csdn.net/IvyXYW/article/details/112351144