Nginx安装

1.环境配置

[安装编译依赖环境]
yum install gcc pcre-devel zlib-devel openssl-devel
[开放防火墙端口]
firewall-cmd --zone-public --add-port=自定义端口/tcp --permanent
[重载防火墙]
systemctl reload firewalld
[查看防火墙已开启端口]
firewall-cmd --list-port
[创建nginx组和用户]
groupadd nginx
useradd nginx -g nginx -s /sbin/nologin -M
[调整系统资源限制] vi /etc/security/limits.conf

1
2
3
4
* soft nofile 65535 
* hard nofile 65535
* soft nproc 65535
* hard nproc 65535

2.编译安装

下载nginx源码并上传到目标机器。
tar -zxvf nginx-1.14.2.tar.gz
cd nginx-1.14.2
[自定义编译nginx]

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
./configure \
--prefix=安装路径/nginx \
--sbin-path=/usr/sbin/nginx \
--conf-path=/etc/nginx/nginx.conf \
--error-log-path=/var/log/nginx/error.log \
--pid-path=/var/run/nginx/nginx.pid \
--lock-path=/var/lock/nginx.lock \
--user=nginx \
--group=nginx \
--with-http_ssl_module \
--with-http_flv_module \
--with-http_gzip_static_module \
--http-log-path=/var/log/nginx/access.log \
--with-http_stub_status_module \
--with-openssl=

[安装nginx]
make
make install

3.编辑启动脚本

vi /usr/lib/systemd/system/nginx.service

1
2
3
4
5
6
7
8
9
10
11
[Unit]
Description=nginx
After=network.target
[Service]
Type=forking
ExecStart=/usr/sbin/nginx -c /etc/nginx/nginx.conf
ExecReload=/usr/sbin/nginx -s reload
ExecStop=/usr/sbin/nginx -s stop
PrivateTmp=true
[Install]
WantedBy=multi-user.target 

4.编辑配置文件

vi /etc/nginx/nginx.conf

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
user  nginx;
worker_processes  auto;
工作进程数

error_log  /var/log/nginx/error.log;
错误日志路径
pid        /var/log/nginx/nginx.pid;
PID路径

events {
事件模块可以使用指令来配置网络机制
    worker_connections  65535;
    单进程最大连接数
    use epoll;
    epoll模式:增加并发连接数
    multi_accept on;
    打开同时接受多个新网络连接请求的功能
}

http {
HTTP模块控制着nginx http处理的所有核心特性
    include       mime.types;
    纳入mime.types文件的配置
    default_type  application/octet-stream;
    MIME类型
    log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
                      '$status $body_bytes_sent "$http_referer" '
                      '"$http_user_agent" "$http_x_forwarded_for"';
                      nginx日志格式化规则
    access_log  /var/log/nginx/access.log  main;
    nginx访问日志路径及规则
    charset utf-8;
    字符集

    tcp_nodelay    on;
    开启后禁用Nagle算法,减小延迟,降低网络利用率
    
    server_tokens off;
    隐藏nginx版本号
    
    open_file_cache max=65535 inactive=20s;
    最大缓存文件数及缓存时间
    open_file_cache_valid 30s;
    每30s检查缓存是否最新
    open_file_cache_min_uses 1;
    20s内访问次数小于1则从缓存中删除该文件
    
    client_header_buffer_size 4k;
    若(请求行+请求头)的大小未超过此值则直接放行,否则以下值为准
    large_client_header_buffers 4 32k;
    请求行<4k&请求头每个头部字段<32K&请求行+请求头<128K
    client_header_timeout 15;
    请求头超时时间(s)
    client_body_timeout 15;
    请求体超时时间(s)
    client_max_body_size 8m;
    请求体大小上限
    
    client_body_temp_path /usr/local/nginx/body_temp 1 2;
    请求体临时文件路径及子目录级别
    
    reset_timedout_connection on;
    关闭超时客户端连接并释放内存
    send_timeout 30;
    服务端向客户端传输数据的超时时间
    
    gzip on;
    压缩文件
    gzip_min_length 1k;
    开始压缩的最小长度
    gzip_buffers 4 16k;
    压缩文件占用内存缓冲块数及块大小
    gzip_http_version 1.0;
    开始压缩的http协议版本
    gzip_comp_level 2;
    级别越高,压的越小,越浪费CPU计算资源
    gzip_types text/plain application/x-javascript text/css application/xml;
    需要压缩的文件类型
    gzip_vary on;
    是否传输gzip压缩标志
    
    upstream model{
    逆向代理实现负载均衡(默认为轮询),代理名为model
        server 10.24.70.81:200;
        节点1
        #server 10.24.70.82:100;
        节点2
        #server 10.24.70.83:127;
        节点3
    }
    server {
        listen       80;
        外部访问端口
        server_name  10.24.70.50;
        外部访问IP

        location /url {
            proxy_pass http://model/abc;
            即访问http://10.24.70.50:80/url会跳转到http://10.24.70.81:200/abc
            proxy_set_header Host $host;
            若请求未携带Host请求头则为$host变量虚拟主机的主域名
            proxy_set_header X-Forwarded-For $remote_addr;
            使https代理增加x_forwarded_for头信息以保存客户的真实IP
            proxy_connect_timeout 90;
            后端服务器连接的超时时间(s)
            proxy_buffer_size 4k;
            缓冲区大小
            proxy_buffers 4 32k;
            缓冲区数量及大小
            proxy_busy_buffers_size 64k;
            同时传输到客户端的buffer数量
            proxy_temp_file_write_size 64k;
            当响应内容大于proxy_buffers指定的缓冲区时, 写入硬盘的临时文件的大小
            proxy_read_timeout 90;
            代理服务器读取超时(s)
            proxy_send_timeout 90;
            代理服务器读取超时(s)
            proxy_temp_path /usr/local/nginx/proxy_temp80 1 2;
            代理临时文件路径及子目录级别
            root   html;
            index  index.html index.htm;
        }
        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   html;
        }
    }
}

5.启动Nginx

systemctl start nginx
[开机运行nginx服务]
systemctl enable nginx