# Nginx

# Nginx官网

'' (opens new window)

# 安装

# docker安装

1、下载nginx镜像

docker pull nginx
1

2、创建临时容器

docker run --name nginx1 -d nginx
1

3、进入容器

docker exec -it nginx1 /bin/bash
1

4、把容器内nginx的配置文件夹复制到主机/root目录下

docker cp nginx1:/etc/nginx /root
1

5、停止容器

docker stop nginx1
1

6、删除临时容器

docker rm nginx1
1

7、启动容器并挂载配置文件夹

docker run --name nginx1 -d -p 1888:80 -v /root/nginx:/etc/nginx nginx
1

8、修改配置文件后

docker restart nginx1
1

9、外部使用 -t 文件 检查配置文件

docker exec nginx1 nginx -t
1

注: docker 容器内nginx配置文件地址在 /etc/nginx

# 编译下载安装(推荐)

image-20220503234316363 (opens new window)

1、下载源码 一般选择稳定版本,直接使用linux下载命令 例:

wget http://nginx.org/download/nginx-1.24.0.tar.gz
1

2、下载编译环境(如果有可以不用下载)

yum install gcc gcc-c++ automake pcre pcre-devel zlip zlib-devel openssl openssl-devel
1
 yum -y install gcc gcc-c++ make libtool zlib zlib-devel openssl openssl-devel pcre pcre-devel
1
sudo apt-get install build-essential zlib1g-dev libpcre3-dev libssl-dev openssl -y
1

3、解压,并进入目录

tar -zxvf nginx-1.24.0.tar.gz && cd nginx-1.24.0
1

4、设置编译参数 编译参数有很多,这边我只增加了SSL模块,可以根据自身情况调整,执行完成后会在当前目录多出 Makefile 文件

./configure --with-http_ssl_module --with-stream --with-http_v2_module
1
  • ssl模块
  • 端口转发模块
  • http2模块

编译参数详解

  • --prefix=PATH:指定 nginx 的安装目录
  • --conf-path=PATH:指定 nginx.conf 配置文件路径
  • --user=NAME:nginx 工作进程的用户
  • --with-pcre:开启 PCRE 正则表达式的支持
  • --with-http_ssl_module:启动 SSL 的支持
  • --with-stream: stream流,端口转发
  • --with-http_stub_status_module:用于监控 Nginx 的状态
  • --with-http-realip_module:允许改变客户端请求头中客户端 IP 地址
  • --with-file-aio:启用 File AIO
  • --add-module=PATH:添加第三方外部模块

5、编译,安装

make && make install
1

因编译时未指定安装目录,执行make install 命令后看到反馈日志信息,默认安装目录为 /usr/local/nginx

TIP

文件服务器美化工具 https://www.jianshu.com/p/5b2914c19253

6、升级nginx版本

步骤1,2,3,4都一样,只有第五步的时候,只要 make 编译就可以了,不需要安装!

编译完成后直接把二进制文件复制到sbin目录下,重新运行就可以了!

# yum一键安装

1、下载并安装,yum安装的nginx配置文件默认在 /etc/nginx 路径下

yum install nginx
1

# Nginx全局配置

1、编辑环境变量

vim /etc/profile
1

2、在末尾加入,前提是默认路径下才可以,如果不是,需要手动修改路径

export NGINX_HOME=/usr/local/nginx
export PATH=$PATH:$NGINX_HOME/sbin
1
2

3、使配置生效

source /etc/profile
1

4、输入nginx -v,出现版本信息就代表环境变量配置成功。

# 自启动

# 方式一

1、修改linux系统文件

vim /etc/rc.d/rc.local
1

2、在文件末尾加入

/usr/local/nginx/sbin/nginx
1

3、给文件可执行权限

chmod 777 /etc/rc.d/rc.local
1

# 方式二(推荐)

1、注册systemctl服务 在/usr/lib/systemd/system目录下创建将nginx.service

vim /usr/lib/systemd/system/nginx.service
1
[Unit]
# 此区块信息用于描述当前服务的简单描述
# 服务描述信息
Description=nginx
# 本服务在哪些服务启动之后启动,仅定义启动顺序,不定义服务依赖关系,即使要求先启动的服务启动失败,本服务也依然会启动,其中network.target代表有网路
After=network.target

[Service]
# 此区块定义如何启动当前服务
# 指定服务的管理类型
Type=forking
# 启动服务时执行的命令
ExecStart=/usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf
# 指定重载服务进程时运行的命令
ExecReload=/usr/local/nginx/sbin/nginx -s reload
# 停止服务时执行的命令
ExecStop=/usr/local/nginx/sbin/nginx -s quit
# 表示只要服务退出,则服务将自动重启
Restart=always
# RestartSec 与 Restart 配合使用,在服务终止多长时间之后才重新启动它。默认是 100ms。
RestartSec=30s
# 该字段用于设置服务是否使用私有的 tmp目录
PrivateTmp=true

[Install]
# 定义如何安装配置文件
# 本服务设置开机自启动时,在被依赖目标的.wants目录下创建本服务的软链接。例如WantedBy = multi-user.target时,将在/etc/systemd/multi-user.target.wants目录下创建本服务的软链接。
WantedBy=multi-user.target

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

重新加载systemd配置文件

systemctl daemon-reload
1

启动nginx

systemctl start nginx
1

设置开机启动

systemctl enable nginx
1

查看服务状态

systemctl status nginx
1

# 默认配置


#Author LiGuangLong

#user  nobody;
user  root;
worker_processes  auto;

events {
    worker_connections  1024;
    multi_accept on;
    accept_mutex on;
}

http {
    include       mime.types;
    default_type  application/octet-stream;


    sendfile        on;
    server_tokens off;
    gzip  on;
    tcp_nodelay    on;
    tcp_nopush     on;
    charset 'utf-8';
    proxy_buffering on;
    keepalive_timeout  120s;
    client_max_body_size 100m;
    client_header_timeout    60s;
    client_body_timeout      60s;
    proxy_connect_timeout     60s;
    proxy_read_timeout      60s;
    proxy_send_timeout      60s;
    proxy_buffer_size 128k;
    proxy_buffers 32 128k;
    proxy_busy_buffers_size 256k;
    proxy_max_temp_file_size 256k;

    log_format json '{"dtTime":"$time_iso8601",'
    '"content":"FwIp=>$remote_addr,Uri=>$uri,Method=>$request_method,Query=>$query_string,Body=>$request_body,Status=>$status,size=>$body_bytes_sent,request_time=>$request_time",'
    '"serverName":"$server_addr",'
    '"method":"$http_user_agent",'
    '"appName":"Nginx"'
    '}';
    access_log  logs/access.log  json;


    server {
        listen       80;
        server_name  127.0.0.1 localhost;


        #这个配置允许来自 example.com 及其子域名,以及 example.org 及其子域名的请求访问服务器资源。
        # valid_referers server_names *.example.com *.example.org;
        # if ($invalid_referer) {
        #    return 555;
        #}
        # 解决 http host头 攻击漏洞,还有eth的网卡ip
        #if ($host !~* ^(127.0.0.1|localhost|ligl.top|121.43.149.217)$ ) {
        #    add_header Content-Type application/json;
        #    default_type application/json;
        #    return 200 '{"msg":"Nginx异常!","code":500,"data":"host不匹配!","time":"$time_iso8601","status":false}';
        #}


        # 请求头 xss 安全设置
        add_header 'X-Content-Type-Options' 'nosniff';
        add_header 'X-XSS-Protection' '1; mode=block';

        #  配置请求客户端真实的 Host 信息
        proxy_set_header Host $http_host;
        # 配置请求用户真实的IP信息
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header REMOTE-HOST $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;

        location / {
            proxy_pass   http://127.0.0.1:33381/;
        }
        # 文件映射
        #location / {
        #    alias /root/file/;
        #}

        # 这个作用只针对于当前nginx,在没有匹配到location的情况下才有用,如果匹配到了location,且反向代理的服务,没有具体的访问路径,还是返回404,以代理的服务返回为准
        # 403 代表资源不可以访问,deny 指令返回的状态码就是403
        error_page   500 502 503 504 404 403  = /50x;
        location = /50x {
            add_header Content-Type application/json;
            default_type application/json;
            return 200 '{"msg":"Nginx异常!","code":500,"data":"匹配不到location块!","time":"$time_iso8601","status":false}';
        }
    }

}

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

# 配置详解


#user  nobody;   # 运行用户,可以在编译时进行修改
#user  root;   # 以root用户运行

# worker进程数量,一般几个cpu内核有几个进程,该指令值依赖因素较多,例如是否CPU密集型、是否IO密集型。
# 在初始时设置为cpu的总核数是一个不错的选择。
worker_processes  1;

events {
    # 每个进程创建的连接数量,每个worker进程的最大连接数,1024个事件驱动模型,1个线程复用
    worker_connections  1024;
    # 是否一次性将监听到的连接全接收进来,默认为off,关闭时一次接收一条连接
    multi_accept on;
    # 默认为on,开启时表示以串行方式接入新连接,否则将通报给所有worker, 这可能会浪费资源并产生不可预计的后果,例如惊群问题
    accept_mutex on

}



# stream流配置,端口转发,使用该功能需要在编译时添加对应的模块
stream {
    server {
        # 监听端口
        listen 2222;
        # 转发到的端口
        proxy_pass 192.168.0.21:22;
        # 超时配置
        proxy_connect_timeout 30m;
        proxy_timeout 30m;
    }
    server {
        listen 2223;
        proxy_pass 192.168.0.21:23;
    }
}

# http转发配置
http {
    # include 引入外部配置文件
    # mime.types,用来标识返回的文件是什么类型,在返回的协议头里边添加文件类型标志
    # 用来控制浏览器访问到该文件后,是直接下载还是直接展示出来
    include       mime.types;

    # 如果没有在类型字典中找到,就以流的方式返回给浏览器
    default_type  application/octet-stream;

    # 数据0拷贝 建议为on ,减少数据传输中拷贝次数,代表文件返回给浏览器时,是否需要先拷贝到nginx
    sendfile        on;

    # 只在sendfile on时有效。让数据包挤满到一定程度才发送出去,挤满之前被阻塞
    #tcp_nopush     on;
    # 修改nginx日志,改为json格式, 也可以不修改,根据自己需求
    #access_log  logs/access.log  main;
    log_format json '{"dtTime":"$time_iso8601",'
    '"content":"FwIp=>$remote_addr,Uri=>$uri,Method=>$request_method,Query=>$query_string,Body=>$request_body,Status=>$status,size=>$body_bytes_sent,request_time=>$request_time",'
    '"serverName":"$server_addr",'
    '"method":"$http_user_agent",'
    '"appName":"Nginx"'
    '}';
    access_log  logs/access.log  json;

    # 关闭返回协议头中的nginx版本号
    server_tokens off;

    # 保存连接,超时的时间
    keepalive_timeout  65;

    # 如果是上传文件,限制上传文件的大小,默认1m
    # 该配置如果直接reload不生效,需要kill后重新启动
    client_max_body_size 100m;

    # 读取请求头的超时时间,若超过所设定的大小,返回408错误。
    client_header_timeout    1m;

    # 读取请求实体的超时时间,若超过所设定的大小,返回413错误。
    client_body_timeout      1m;

    # http请求无法立即被容器(tomcat, netty等)处理,被放在nginx的待处理池中等待被处理。此参数为等待的最长时间,默认为60秒,官方推荐最长不要超过75秒。
    # 连接超时时间为60秒
    proxy_connect_timeout     60s;

    # http请求被容器(tomcat, netty等)处理后,nginx会等待处理结果,也就是容器返回的response。此参数即为服务器响应时间,默认60秒。
    proxy_read_timeout      1m;

    # http请求被服务器处理完后,把数据传返回给Nginx的用时,默认60秒。
    # 读取响应超时时间为60秒
    proxy_send_timeout      1m;

    # 是否启用gzip压缩响应报文
    #gzip  on;


    # 开启代理缓冲区
    # 如果不开启,遇到大的js文件可能会出现获取不到的情况
    proxy_buffering on;
    # 响应头的缓冲区设为128k
    proxy_buffer_size 128k;
    # 网页内容缓冲区个数为32,单个大小为128k
    proxy_buffers 32 128k;
    proxy_busy_buffers_size 256k;
    # 缓冲区临时文件最大为 256k
    proxy_max_temp_file_size 256k;


    #开启防止网络阻塞
    #tcp_nodelay    on;
    # 负载均衡配置,和server同一个级别
    # 负载均衡策略: 1.轮训 2.权重 3.ip_hash 4.fair 5.url_hash
    upstream myserver {
        # 根据ip来判断吧请求发送到哪个服务器,但是实际生产环境中没什么用
        # ip_hash;
        # 配置 weight权重,数量越大处理的请求就越多
        # 实际使用中,只使用轮训就可以了,权重用处不大,ip_hash 用处也不大,fair需要安装模块才可以用


        server 127.0.0.1:8081 weight=2;
        server 127.0.0.1:8082 weight=1;


    }
    # 用来解决 http host头 攻击漏洞,也可以直接在具体的server中添加host条件判断
    # 如果加了这个必须在业务处理server中添加具体的server_name
    server {
        listen          33380 default_server;
        server_name  _;
        location / {
            return 403;
        }
    }
    # 代表虚拟主机,一个server可以监听一个端口,一个端口可以被多个server监听,不过server_name要不一样,例如,域名ip等
    server {
        # 监听端口号,不同的server可以重复,但是server_name要不一样
        listen       33380;
        # 可以同时监听多个端口
        listen       80;
        # 解析的主机名,域名,或者监听的域名,不同监听域名,监听端口是可以相同的
        # server_name + listen 必须唯一性
        # 这个地方可以采用正则匹配方式,server_name  ~^[0-9]+\.elel.fun\.com$; 代表二级域名只要以数字开头,包含elel.fun 就会匹配到这个虚拟主机
        server_name  127.0.0.1 localhost ligl.top 121.43.149.217;

        #这个配置允许来自 example.com 及其子域名,以及 example.org 及其子域名的请求访问服务器资源。
        valid_referers server_names *.example.com *.example.org;
        if ($invalid_referer) {
            return 555;
        }
        # 解决 http host头 攻击漏洞,还有eth的网卡ip
        if ($host !~* ^(127.0.0.1|localhost|ligl.top|121.43.149.217)$ ) {
            return 555;
        }

        # 请求头 xss 安全设置
        add_header 'X-Content-Type-Options' 'nosniff';
        add_header 'X-XSS-Protection' '1; mode=block';

        # 设置默认字符集,utf8解决中文乱码
        # charset koi8-r;
        charset 'utf-8';

        # 设置日志打印位置
        # access_log  logs/host.access.log  main;

        # ==================================================
        # location 匹配uri
        # 正则表达式匹配规则
        # ~ 代表区分大小写的正则匹配
        # ~* 代表不区分大小写
        #  ^~ /uri/ {} 表示禁用正则匹配,即精确字符串匹配,此时正则中的元字符被解释成普通字符。
        # ~代表开始使用正则表达式 ~* \.(js|img|css)$ 代表匹配这三个结尾的请求
        # ^ 表示匹配字符串的开始位置
        # $ 表示匹配字符串的结束位置
        # ==================================================


        # 静态文件匹配
        # root 是把uri和root路径拼接起来,去查找访问的文件
        # alias 是把uri替换词 alias指定的文件夹
        # 注意:alias指定的路径结尾要加”/”
        location / {
            # 添加 proxy_set_header Host $http_host; 这个参数后,如果proxy_pass 后的地址又使用apisix,而apisix有通过host来区分来代理多个路由,这个参数可能会导致apisix找不到路由,出现 {"error_msg":"404 Route Not Found"} 错误

            #  配置请求客户端真实的 Host 信息
            proxy_set_header Host $http_host;
            # 配置请求用户真实的IP信息
            proxy_set_header X-Real-IP $remote_addr;
            proxy_set_header REMOTE-HOST $remote_addr;
            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
            
            proxy_pass   http://127.0.0.1:33381;
        }
        location /service-side-new/ {
            proxy_pass http://127.0.0.1:8686/service-side-new/;
        }
        location /display-lkyw/ {
            proxy_pass   http://myserver;
        }
        # 代理ws协议,前端连接可以使用ssl
        location /ws {
            access_log /usr/local/nginx/logs/come-websocket.log;
            proxy_pass http://121.43.149.217:15674; # 代理rabbitmq
            proxy_read_timeout 60s;
            proxy_http_version 1.1;
            # websocket连接进入的时候,进行一个连接升级将http连接变成websocket的连接
            proxy_set_header Upgrade $http_upgrade;
            proxy_set_header Connection 'Upgrade';
        }

        ## 文件映射,root,alias
        # autoindex  on;   是否允许访问文件夹内容,访问的时候要在文件夹后边夹/才可以
        # http*:80/file/1.txt   ==> /root/file/1.txt
        location /file/ {
            root   /root;
        }
        # ---- 屏蔽swagger
        location ~* (doc.html|api-docs){
            return 404;
        }
        # http/i/1.txt   ===>  /root/file/1.txt
        location /i/ {
            # 文件访问,一般也需要配置跨域
            # 允许 所有头部 所有$corsHost域 所有方法
            add_header Access-Control-Allow-Origin * ;
            add_header Access-Control-Allow-Headers '*';
            add_header Access-Control-Allow-Methods '*';
            # OPTIONS 直接返回204
            if ($request_method = 'OPTIONS') {
                return 204;
            }
            # 是否启用目录列表输出,默认关闭off
            autoindex  on;
            # 指定是否在目录列表展示文件的详细大小
            autoindex_exact_size on;
            # 目录列表的格式
            # 选项值:
            #    (1) html:一个页面(默认)
            #    (2) xml:XML格式数据
            #    (3) json:JSON格式数据
            #    (4) jsonp:
            autoindex_format html;
            # 是否转成当前时区的时间来显示文件的显示时间(实测是最后修改时间)
            autoindex_localtime on;
            
            alias /root/file/;

        }


        # 服务器返回状态码的时候返回的界面,这里如果不加=返回http状态码就是404,加了= 就是200
        error_page 500 502 503 504 /50x.html
        location = /50x.html {
            root html;
        }
    }

}

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
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256

DANGER

nginx只做第一层网络流量转发就好,建议不要配置多余设置,如跨域

# nginx的location与proxy_pass指令超详细讲解及其有无斜杠( / )结尾的区别

(重点,如果做url转发建议都要加/,location部分相当于直接成proxy_pass部分)
proxy_pass末尾有斜杠
location  /api/ {
    proxy_pass http://127.0.0.1:8000/;
}

请求地址:http://localhost/api/test
转发地址:http://127.0.0.1:8000/test
-------------------------------------------------------------------------
proxy_pass末尾无斜杠
location  /api/ {
    proxy_pass http://127.0.0.1:8000;
}
请求地址:http://localhost/api/test
转发地址:http://127.0.0.1:8000/api/test
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
(重点,如果做url转发建议都要加/,location部分相当于直接成proxy_pass部分)
proxy_pass包含路径,且末尾有斜杠
location  /api/ {
    proxy_pass http://127.0.0.1:8000/user/;
}
请求地址:http://localhost/api/test
转发地址:http://127.0.0.1:8000/user/test
-------------------------------------------------------------------------
proxy_pass包含路径,末尾无斜杠
location  /api/ {
    proxy_pass http://127.0.0.1:8000/user;
}
请求地址:http://localhost/api/test
转发地址:http://127.0.0.1:8000/usertest
1
2
3
4
5
6
7
8
9
10
11
12
13
14
(重点,访问location相当于直接访问映射文件夹下的文件,location不要带/是为了用户在前端输入可以直接用file结尾,而不用再多加一个/,alias要加上/)
proxy_pass末尾有斜杠
location  /file {
    alias /root/file/;
}
1
2
3
4
5

更详细介绍 (opens new window)

# 日志自定义

该配置放入http模块下

log_format json '{"dtTime":"$time_iso8601",'
'"content":"FwIp=>$remote_addr,Uri=>$uri,Method=>$request_method,Query=>$query_string,Body=>$request_body,Status=>$status,size=>$body_bytes_sent,request_time=>$request_time",'
'"serverName":"$server_addr",'
'"method":"$http_user_agent",'
'"appName":"Nginx"'
'}';
access_log  logs/access.log  json;
1
2
3
4
5
6
7

变量说明:

dtTime:当前时间
content:请求资源详情
FwIp:访问者ip
Uri:请求uri
Method:请求方式
Query:请求参数
Body:请求body
Status:返回状态码
size:结构体大小
request_time:响应时间
serverName:nginx主机
method:请求客户端
appName:日志标记
1
2
3
4
5
6
7
8
9
10
11
12
13

# 常用命令

# 启动nginx

./nginx
1

# 停止nginx

./nginx -s stop
1

# 重新加载配置文件

./nginx -s reload
1

# 检查配置文件是否正确

./nginx -t
1

# 重启nginx

./nginx -s reopen
1

# 显示版本信息

./nginx -v
1

# 显示版本和配置选项信息

./nginx -V
1

# 指定配置文件

./nginx -c filename
1

# 限制ip访问

使用deny指令:在Nginx的配置文件中,可以使用deny指令来禁止特定IP的访问。例如,要禁止IP地址为192.168.1.100的访问,可以在配置文件中添加以下内容:

location / {
    deny 192.168.1.100;
    ...
}
1
2
3
4

使用allow和deny指令的组合:可以通过使用allow和deny指令的组合来限制IP访问。例如,要允许IP地址为192.168.1.0/24的访问,但禁止IP地址为192.168.1.100的访问,可以在配置文件中添加以下内容

location / {
    allow 192.168.1.0/24;
    deny 192.168.1.100;
    ...
}
1
2
3
4
5

这样,除了IP地址为192.168.1.100的请求之外,其他IP地址都将被允许访问

如果不写ip,还可以直接写all

deny all;

allow all;

# 代理ws协议

1、nginx配置

# 代理ws协议,前端连接可以使用ssl
location /ws {
    access_log /usr/local/nginx/logs/come-websocket.log;
    proxy_pass http://121.43.149.217:15674; # 代理rabbitmq
    proxy_read_timeout 60s;
    proxy_http_version 1.1;
    # websocket连接进入的时候,进行一个连接升级将http连接变成websocket的连接
    proxy_set_header Upgrade $http_upgrade;
    proxy_set_header Connection 'Upgrade';
}
1
2
3
4
5
6
7
8
9
10

2、前端配置

# ssl证书配置

1、条件

配置前确定nginx有ssl模块并且开启状态

docker默认没有ssl模块

nginx未开启ssl功能

开启状态

2、下载完证书后,上传服务器到cert目录下

img img

3、修改配置文件


server {
    listen       80;
    server_name  elel.fun;
    return 301 https://$server_name$request_uri;
}

server {
    listen       443 ssl;
    server_name  elel.fun;

    ssl_certificate      cert/7406977_www.elel.fun.pem;
    ssl_certificate_key  cert/7406977_www.elel.fun.key;

    ssl_session_cache    shared:SSL:1m;
    ssl_session_timeout  5m;

    ssl_ciphers  HIGH:!aNULL:!MD5;
    ssl_prefer_server_ciphers  on;

    location / {
        alias /root/password/dist/;
    }
    location /fastjson/ {
        proxy_pass  http://localhost:8080/fastjson/;
    }
    error_page   500 502 503 504  /50x.html;
    location = /50x.html {
        root   html;
    }
}
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

# 同一个主机多证书配置

1、配置多个证书,改配置需要是打开状态

2、添加多个server块

3、申请证书时一定要注意,www.ligl.top和ligl.top是两个完全不同的域名,证书不可以共用

# Nginx 重新加载配置不生效问题

nginx -s reload
1

1、如果nginx进程太多,直接reload会不起作用,可以kill在重新启动

2、端口占用,导致启动不起来

# 编译参数

./configure --help           => 查看安装配置项
--help
打印帮助信息。

--prefix=PATH
设置软件安装目录路径。

--sbin-path=PATH
设置可执行文件安装目录路径。

--modules-path=PATH
设置模块安装目录路径。

--conf-path=PATH
设置配置文件安装目录路径。

--error-log-path=PATH
设置错误日志文件安装目录路径。

--pid-path=PATH
设置进程文件安装目录路径。

--lock-path=PATH
设置NGINX锁文件安装目录路径,当NGINX运行时会自动创建该文件,用于在一台服务器上只允许运行一个NGINX服务。

--user=USER
设置运行进程时所使用的系统用户,如果没有指定,则默认为nobody,就算安装时不指定,后期也可以通过修改"nginx.conf"配置文件中的"user"项修改。

--group=GROUP
设置运行进程时所使用的用户组。

--build=NAME
设置编译名,一个描述,没有任何其他作用。

--builddir=DIR
设置编译目录,会将编译后生成的文件写入到这个目录中。

--------------------------------------------------------------------------------

--with-select_module
--without-select_module
启用或禁用select事件驱动模型。默认情况下在Linux2.6以上的内核版本中,Nginx支持使用Epoll高效的事件模型,我们可以在配置文件中使用"use epoll"指令开启它。

--with-poll_module
--without-poll_module
启用或禁用poll事件驱动模型。默认情况下在Linux2.6以上的内核版本中,Nginx支持使用Epoll高效的事件模型,我们可以在配置文件中使用"use epoll"指令开启它。

--with-threads
--with-file-aio
启用线程池功能。一般情况下主机有几核处理器在启动Nginx时就会创建几个Worker工作进程,进程创建线程处理每一个请求,当在CPU密集型计算、资源访问的环境下,很多请求都会开启对应的线程,可能会由于磁盘IO限制导致的线程处理请求时间变长,这不是我们期望看到的,我们就可以启用线程池功能,让请求排队等待处理,并且可以充分利用CPU提高处理效率。开启线程池需要AIO的支持。
启用异步文件IO(AIO)支持。一般用于大文件传输的场景下。

--------------------------------------------------------------------------------

--with-http_ssl_module
启用HTTP_SSL模块,用于构建HTTPS服务。默认情况下不构建此模块。

--with-http_v2_module
启用HTTP_V2模块,新的HTTP协议,相比HTTP1更优更快。默认情况下不构建此模块。

--with-http_realip_module
启用HTTP_Realip模块,用于修改客户端请求头中客户端IP地址值,一般用于反向代理中,将真实的客户端IP传送给后端的应用服务器。默认情况下不构建此模块。

--with-http_addition_module
启用HTTP_Addition模块,用于在响应之前和之后添加文本。默认情况下不构建此模块。

--with-http_xslt_module
--with-http_xslt_module=dynamic
启用HTTP_Xslt模块,这个模块是一个过滤器,它可以通过XSLT模板转换成XML响应。需要ibxml2和libxslt库的支持。默认情况下不构建此模块。
启用HTTP_Xslt动态模块,允许在配置文件中通过"load_module"指令手动启用和禁用模块的使用。默认情况下不构建此模块。

--with-http_image_filter_module
--with-http_image_filter_module=dynamic
启用HTTP_Image_Filter模块,这个模块是一个集成图片处理器,我们可以使用它转换JPEG、GIF、PNG和WEBP格式的图像,验证这些格式图像的有效型(是不是此格式的图像),输出JSON格式的图像信息,旋转图像,按比例缩放图像,剪切图片等。默认情况下不构建此模块。
启用HTTP_Image_Filter动态模块,允许在配置文件中通过"load_module"指令手动启用和禁用模块的使用。默认情况下不构建此模块。

--with-http_geoip_module
--with-http_geoip_module=dynamic
启用HTTP_Geoip模块,这个模块用于处理不同地区的访问,当来自某一个区域的访问时将其重定向到对应的服务或者项目上,需要MaxMind GeoIP库的支持。默认情况下不构建此模块。
启用HTTP_Geoip动态模块,允许在配置文件中通过"load_module"指令手动启用和禁用模块的使用。默认情况下不构建此模块。

--with-http_sub_module
启用HTTP_Sub模块,这个模块是一个过滤器,用于修改响应的内容,可以将一个指定的字符串替换成另一个字符串。默认情况下不构建此模块。

--with-http_dav_module
启用HTTP_DAV模块,用于通过WEBDAV协议提供WEB的文件管理功能,类似于一个WEB的文件管理器,可以对服务器的文件进行管理。默认情况下不构建此模块。

--with-http_flv_module
--with-http_mp4_module
启用HTTP_FLV模块,用于为Flash Video(FLV)文件提供伪流视频服务端支持,开启它则允许在网页上播放FLV格式的视频。默认情况下不构建此模块。
启用HTTP_MP4模块,用于为MP4格式的视频文件提供伪流视频服务端支持,开启它则允许在网页上播放MP4格式的视频。默认情况下不构建此模块。

--with-http_gunzip_module
--with-http_gzip_static_module
启用HTTP_Gunzip模块,用于为不支持"gzip"编码方式的客户端解压响应,有些浏览器不支持"gzip"编码格式的请求和响应传输,若服务器开启了内容传输压缩功能(Gzip),则需要开启此项,服务器会本地解压数据,将数据传送给浏览器客户端。默认情况下不构建此模块。
启用HTTP_Gzip_Static模块,用于将静态内容压缩成".gz"为文件扩展名的预压缩文件,并缓存在本地,在响应时会将此文件发送以替代普通文件,运用此模块的好处就是不需要(Gzip)每次传输时都需要对文件进行处理压缩。在用于Squid+Nginx环境下,当Nginx启用(Gzip)内容传输压缩功能时,在使用Squid3.0以前版本搭建环境时会发现,Squid返回给客户端的并不是压缩状态,这就是由于没有启用此模块导致的。默认情况下不构建此模块。

--with-http_auth_request_module
启用HTTP_Auth_Request模块,此模块是一个请求验证模块,可以使用外部服务器或服务对网站的每个请求进行身份验证,当用户访问时,Nginx会向用于验证请求的外部服务器发出验证请求,若返回的状态码为200,则通过允许访问,若返回401或403,则访问会被拒绝。默认情况下不构建此模块。

--with-http_random_index_module
启用HTTP_Random_Index模块,随机主页模块,当用户访问时,随机响应一个主页,而并非由"index"指令定义的一个主页,而是从主页池中随机选中一个主页面返回。默认情况下不构建此模块。

--with-http_secure_link_module
启用HTTP_Secure_Link模块,防盗链模块,用于检查请求链接的权限以及是否过期,多用于文件下载防盗链。默认情况下不构建此模块。

--with-http_degradation_module
启用HTTP_Degradation模块,用于当主机剩余内存较低时,用户请求访问,Nginx会对某些"location"的请求返回204或444的响应码。默认情况下不构建此模块。

--with-http_slice_module
启用HTTP_Slice模块,此模块是一个过滤器,用于将一个大的完整的文件分割成多个小块文件,分段传送给用户,一般用于大文件传输的场景下,使用它可以让用户快速的得到响应。默认情况下不构建此模块。

--with-http_stub_status_module
启用HTTP_Stub_Status模块,状态信息统计模块,用于返回一个Nginx状态信息统计信息页面,管理员访问这个页面可以获取Nginx的请求处理、当前连接、等待连接等统计信息,一般用于监控Nginx的运行状态。默认情况下不构建此模块。

--------------------------------------------------------------------------------

--without-http_charset_module
禁用HTTP_Charset模块,此模块用于将指定的字符集添加到"Content-Type"响应头字段中。此外此模块还可以将数据从一个字符集转换为另一个字符集,此模块用于字符集设置。不建议禁用。

--without-http_gzip_module
禁用HTTP_Gzip模块,此模块用于HTTP响应内容传输压缩,可以将响应内存在传输时将其压缩成Gzip编码格式的响应传送给客户端,使用Gzip编码格式响应内容体积会变小,会提高传输效率。不建议禁用。

--without-http_ssi_module
禁用HTTP_SSI模块,此模块是一个过滤器,用于处理通过它响应中的SSI(Server Side Includes)命令。目前支持的SSI命令列表并不完整,SSI指令是一种可以嵌入WEB页面的一种语法指令。

--without-http_userid_module
禁用HTTP_Userid模块,此模块用于识别客户端的Cookie。可以使用嵌入变量"$uid_got""$uid_set"记录已接受和设置的Cookie。

--without-http_access_module
禁用HTTP_Access模块,此模块用于限制对某些客户端地址的访问,Allow or Deny。不建议禁用。

--without-http_auth_basic_module
禁用HTTP_Auth_Basic模块,该模块用于HTTP基本身份验证,使用用户名和密码来限制对资源的访问。

--without-http_mirror_module
禁用HTTP_Mirror模块,该模块用于将正式环境的流量拷贝到镜像(测试)环境下,一般用于测试环境引入真实环境的流量实现对测试环境的压力测试。

--without-http_autoindex_module
禁用HTTP_Autoindex模块,该模块用于在处理以斜杠字符('/')结尾的请求,并在找不到索引文件的情况下生成目录列表。

--without-http_geo_module
禁用HTTP_Geo模块,该模块用于从指定变量中获取客户端的IP地址,并将其嵌入到另外一个变量中。默认情况下从"$remote_addr"变量中取得客户端的IP地址。我们可以通过它结合"HTTP_Upstream"实现对来源客户端的负载均衡,当来自不同的客户端请求时,将其负载均衡给后端的不同的服务器处理;还可以使用它结合"HTTP_Map"+"HTTP_Limit_Conn"模块实现对来源客户端的限速功能。

--without-http_map_module
禁用HTTP_Map模块,该模块用于创建一个变量的映射表,结果变量可以是一个字符串也可以是另外一个变量。

--without-http_split_clients_module
禁用HTTP_Splic_Clients模块,该模块用于创建适用于A/B测试的变量,AB测试也称之为拆分测试,也就是将一个项目的两个不同版本发布,看用户更喜欢用于那个版本,若版本A受欢迎则发布版本A。

--without-http_referer_module
禁用HTTP_Referer模块,该模块用于防盗链,用于阻止对请求头部"referer"字段具有无效值的请求访问,可以设置一个白名单,非白名单的无效来源网址的连接则会拒绝请求,使用此模块我们还需考虑到,即使对于有效的请求,常规浏览器也可能不发送"referer"字段。不建议禁用。

--without-http_rewrite_module
禁用HTTP_Rewerte模块,该模块用于地址重写,用于将来源请求地址重定向到指定的地址上,可以保护真实的地址,增加安全性,该模块需要PCRE库的支持。不建议禁用。

--without-http_proxy_module
--without-http_fastcgi_module
--without-http_uwsgi_module
--without-http_scgi_module
--without-http_grpc_module
禁用HTTP_Proxy模块,该模块用于将请求代理传递到另外一台WEB服务器去处理,Nginx的核心模块。不建议禁用。
禁用HTTP_FastCGI模块,该模块用于将请求代理传递到另外一台FastCGI服务器去处理,一般用于反代PHP。不建议禁用。
禁用HTTP_UwSGI模块,该模块用于将请求代理传递给另外一台UwSGI服务器去处理。
禁用HTTP_SCGI模块,该模块用于将请求代理传递给另外一台SCGI服务器去处理。
禁用HTTP_Grpc模块,该模块用于将请求代理传递给另外一台Grpc服务器去处理。

--without-http_memcached_module
禁用HTTP_Memcached模块,该模块用于Nginx从Memcached服务器获取响应内容。一般用于Nginx+后端服务器+Memcached的环境下,当用户第一请求时,Nginx去Memcached中读取缓存数据,若没有则就请求后端的服务器去处理,后端服务器将静态页面的数据写入到Memcached缓存服务器中并返回响应给Nginx传递给用户,当用户第二次请求时则Nginx直接从Memcached缓存服务器中获取缓存的静态页面内容,Memcached缓存服务器是基于内存的,所以可以减少磁盘IO的使用,提高响应效率。

--without-http_limit_conn_module
禁用HTTP_Limit_Conn模块,该模块用于限制并发连接数量以及下载带宽限制。

--without-http_limit_req_module
禁用HTTP_Limit_Req模块,该模块用于限制请求数量,可以限制请求的频率。

--without-http_empty_gif_module
禁用HTTP_Empty_Gif模块,该模块会在内容中常驻的一个1X1的透明空白的GIF图像,当用户请求时,返回该图像,一般用于测试。

--without-http_browser_module
禁用HTTP_Browser模块,该模块用于创建变量,变量的值取决于请求头中"user-agent"的值,一般用于区别新式或者旧式浏览器,若新式浏览器则将请求重定向到新式的WEB页面中,呈现新页面,若为旧式浏览器则将返回旧式的WEB页面。

--without-http_upstream_hash_module
--without-http_upstream_ip_hash_module
--without-http_upstream_least_conn_module
禁用HTTP_Upstream_Hash模块,该模块提供了由"Upstream"指令定义的一组服务器的负载均衡方法"Hash",该方法基于散列键值(hash),它会将客户端+服务端的映射关系存放到一个散列键值表中,当客户端第二次请求时则会匹配关系将请求转发至后端的同一台服务器上,实现会话保持功能。该模块提供指令"hash",在会话保持中,我们唯一能标识客户端的标志就是SessionID,所以我们可以使用指令"hash $cookie_jsession"实现会话保持功能。不建议禁用。
禁用HTTP_Upstream_IP_Hash模块,该模块提供了由"Upstream"指令定义的一组服务器的负载均衡方法"ip_hash",该方法也用于会话保持,不过它是基于客户端IP的Hash方法,由于用户可能是ADSL接入的网络,所以客户端可能受动态IP影响会发生变化,所以一般不建议采用这种方法。
禁用HTTP_Upstream_Least_Conn模块,该模块提供了由"Upstream"指令定义的一组服务器的负载均衡方法"least_conn",该方法用于将请求传递到具有最少活动连接、权重较高(性能最好)的后端服务器上去处理。

--without-http_upstream_keepalive_module
禁用HTTP_Upstream_Keepalive模块,该模块可以为由"Upstream"指令定义的一组服务器提供保持长连接的功能,使用它则会为每个Worker工作进程与后端服务器保持空闲的长连接,连接数由"keepalive"指令指定,当空闲的长连接数量超过指定值时,将关闭最近最少使用的连接。

--without-http_upstream_zone_module
禁用HTTP_Upstream_Zone模块,该模块可以将由"Upstream"指令定义的服务器组运行时的状态存储在共享内存区域中。

--------------------------------------------------------------------------------

--with-http_perl_module
--with-http_perl_module=dynamic
启用HTTP_Perl模块,用于在Perl中实现位置和变量处理程序,并可以将Perl调用到SSI中。默认情况下不构建此模块。
启用HTTP_Perl动态模块,允许在配置文件中通过"load_module"指定手动启用和禁用模块的使用。默认情况下不构建此模块。

--with-perl_modules_path=PATH
设置一个用于保留Perl模块的目录路径。

--with-perl=PATH
设置Perl可执行命令文件的路径。

--------------------------------------------------------------------------------

--http-log-path=PATH
设置访问日志文件存放目录路径。安装后,可以在主配置文件中使用"access_log"指令修改。

--http-client-body-temp-path=PATH
设置用于存储客户端请求主体的临时文件存放目录路径。安装后,可以在主配置文件中使用"client_body_temp_path"指令修改。

--http-proxy-temp-path=PATH
设置用于存储从代理服务器接受的数据临时文件存放目录路径。安装后,可以在主配置文件中使用"proxy_temp_path"指令修改。

--http-fastcgi-temp-path=PATH
设置用于存储从FastCGI服务器接受的数据临时文件存放目录路径。安装后,可以在主配置文件中使用"fastcgi_temp_path"指令修改。

--http-uwsgi-temp-path=PATH
设置用于存储从UwSGI服务器接受的数据临时文件存放目录路径。安装后,可以在主配置文件中使用"uwsgi_temp_path"指令修改。

--http-scgi-temp-path=PATH
设置用于存储从SCGI服务器接受的数据临时文件存放目录路径。安装后,可以在主配置文件中使用"scgi_temp_path"指令修改。

--------------------------------------------------------------------------------

--without-http
禁用HTTP_Core模块,该模块为Nginx的核心模块,用于提供HTTP服务所有核心功能。

--without-http-cache
禁用HTTP缓存。

--------------------------------------------------------------------------------

--with-mail
--with-mail=dynamic
启用HTTP_Mail_Core模块,该模块为Nginx的核心模块,用于提供POP3/IMAP4/SMTP邮件代理服务。默认情况下不构建此模块。
启用HTTP_Mail_Core动态模块,允许在配置文件中通过"load_module"指令手动启用和禁用模块的使用。默认情况下不构建此模块。

--with-mail_ssl_module
启用Mail_SSL模块,用于邮件代理服务支持SSL/TLS协议,需要OpenSSL库的支持。默认情况下不构建此模块。

--without-mail_pop3_module
禁用Mail_POP3模块,当启用HTTP_Mail_Core模块时,若你不想使用POP3协议,则可以考虑单独禁用此模块。不建议禁用。

--without-mail_imap_module
禁用Mail_IMAP模块,当启用HTTP_Mail_Core模块时,若你不想使用IMAP4协议,则可以考虑单独禁用此模块。不建议禁用。

--without-mail_smtp_module
禁用Mail_SMTP模块,当启用HTTP_Mail_Core模块时,若你不想使用SMTP协议,则可以考虑单独禁用此模块。不建议禁用。

--------------------------------------------------------------------------------

--with-stream
--with-stream=dynamic
启用Stream_Core模块,Nginx的核心模块,用于实现TCP/UDP代理和四层负载均衡功能。默认情况下不构建此模块。此模块自Nginx1.9.0版本开始可用。
启用Stream_Core动态模块,允许在配置文件中通过"load_module"指令手动启用和禁用模块的使用。默认情况下不构建此模块。

--with-stream_ssl_module
启用Stream_SSL模块,用于提供SSL/TLS协议支持,需要OpenSSL库的支持。该模块用于Nginx四层负载功能中使用,需要开启Stream_Core模块。默认情况下不构建此模块。

--with-stream_realip_module
启用Stream_Realip模块,用于修改客户端请求头中客户端IP地址值,一般用于反向代理中,将真实的客户端IP传送给后端的应用服务器。该模块用于Nginx四层负载功能中使用,需要开启Stream_Core模块。默认情况下不构建此模块。

--with-stream_geoip_module
--with-stream_geoip_module=dynamic
启用Stream_Geoip模块,用于处理不同地区的访问,当来自某一个区域的访问时将其重定向到对应的服务或者项目上,需要MaxMind GeoIP库的支持。该模块用于Nginx四层负载功能中使用,需要开启Stream_Core模块。默认情况下不构建此模块。
启用Stream_Geoip动态模块,允许在配置文件中通过"load_module"指令手动启用和禁用模块的使用。默认情况下不构建此模块。

--with-stream_ssl_preread_module
启用Stream_SSL_Preread模块,用于从客户端Hello消息中提取信息,而不会终止SSL/TLS。该模块用于Nginx四层负载功能中使用,需要开启Stream_Core模块。默认情况下不构建此模块。

--without-stream_limit_conn_module
禁用Stream_Limit_Conn模块,该模块用于限制并发连接数量以及下载带宽限制功能。该模块用于Nginx四层负载功能中使用,当开启Stream_Core模块时自动开启此功能。不建议禁用。

--without-stream_access_module
禁用Stream_Access模块,该模块用于限制对某些客户端地址的访问。该模块用于Nginx四层负载功能中使用,当开启Stream_Core模块时自动开启此功能。不建议禁用。

--without-stream_geo_module
禁用Stream_Geo模块,该模块用于从指定变量中获取客户端的IP地址,并将其嵌入到另外一个变量中。默认情况下从"$remote_addr"变量中取得客户端的IP地址。该模块用于Nginx四层负载功能中使用,当开启Stream_Core模块时自动开启此功能。不建议禁用。

--without-stream_map_module
禁用Stream_Map模块,该模块用于创建一个变量的映射表,结果变量可以是一个字符串也可以是另外一个变量。该模块用于Nginx四层负载功能中使用,当开启Stream_Core模块时自动开启此功能。不建议禁用。

--without-stream_split_clients_module
禁用Stream_Splic_Clients模块,该模块用于创建适用于A/B测试的变量,AB测试也称之为拆分测试,也就是将一个项目的两个不同版本发布,看用户更喜欢用于那个版本,若版本A受欢迎则发布版本A。该模块用于Nginx四层负载功能中使用,当开启Stream_Core模块时自动开启此功能。

--without-stream_return_module
禁用Stream_Return模块,该模块用于向客户端发送指定值,然后关闭连接。该模块用于Nginx四层负载功能中使用,当开启Stream_Core模块时自动开启此功能。不建议禁用。

--without-stream_upstream_hash_module
--without-stream_upstream_least_conn_module
禁用Stream_Upstream_Hash模块,该模块提供四层负载均衡的一种调度方法,一般用于基于SessionID的会话保持场景下,当开启Stream_Core模块时自动开启此功能。不建议禁用。
禁用Stream_Upstream_IP_Hash模块,该模块提供四层负载均衡的一种调度方法,基于来源IP的会话保持方法,由于来源IP的不稳定性,我们一般很少采用此种方法。当开启Stream_Core模块时自动开启此功能。

--without-stream_upstream_zone_module
禁用Stream_Upstream_Zone模块,该模块可以将由"Upstream"指令定义的服务器组运行时的状态存储在共享内存区域中。该模块用于Nginx四层负载功能中使用,当开启Stream_Core模块时自动开启此功能。

--------------------------------------------------------------------------------

--with-google_perftools_module
启用Google_Perftools模块,用于可以使用Google Performance Tools分析Nginx的工作进程,分析程序性能瓶颈。该模块适用于Nginx开发人员,默认情况下不构建此模块。

--with-cpp_test_module
启用Cpp_Test模块,用于C++测试。该模块适用于Nginx开发人员,默认情况下不构建此模块。

--add-module=PATH
--add-dynamic-module=PATH
添加第三方模块,需要指定第三方模块所在目录路径。
添加第三方动态模块,需要指定第三方动态模块所在目录路径。

--with-compat
启用动态模块兼容性。

--with-cc=PATH
设置GCC编译器所在目录路径。

--with-cpp=PATH
设置GCC-C++编译器所在目录路径。

--with-cc-opt=OPTIONS
设置将添加到CFLAGS变量的其他参数,若在FreeBSD系统下使用PCRE库时,应指定"--with-ccc-opt="-I /usr/local/include""。若你在使用select事件驱动模型时,还可以使用它设置可打开的最大文件描述符数量,突破1024的限制,比如"--with-ccc-opt="-D FD_SETSIZE=2048""

--with-ld-opt=OPTIONS
设置将在连接期间使用的其他参数,若在FreeBSD系统下使用PCRE库时,应指定"--with-ccc-opt="-L /usr/local/lib""。

--with-cpu-opt=CPU
设置CPU型号,为特定的CPU执行编译操作,有效的值:pentium, pentiumpro, pentium3, pentium4, athlon, opteron, sparc32, sparc64,ppc64。

--without-pcre
禁用PCRE库的使用。

--with-pcre
启用PCRE库的使用。PCRE库是一个Perl库,包含Perl兼容的正则表达式。

--with-pcre=DIR
若你是源码安装的PCRE库,则需要通过此项设置PCRE库的所在目录路径。

--with-pcre-opt=OPTIONS
为PCRE设置其他要编译的选项。

--with-pcre-jit
启用"即时编译"的支持,开启此项,则会利用"pcre_jit"指令快速编译PCRE库。

--with-zlib=DIR
若你是源码安装的Zlib库,则需要通过此项设置Zlib库的所在目录路径。当启用HTTP_Gzip模块的时候需要此库的支持。

--with-zlib-opt=OPTIONS
为Zlib设置其他要编译的选项。

--with-zlib-asm=CPU
为Zlib库的编译设置特定CPU,会加快编译速度,有效值:pentium, pentiumpro。

--with-libatomic
启用Libatomic_Ops库的使用。

--with-libatomic=DIR
若你是源码安装的Libatomic_Ops库,则需要通过此项设置Libatomic_Ops库的所在目录路径。

--with-openssl=DIR
若你是源码安装的OpenSSL库,则需要通过此项设置OpenSSL库的所在目录路径。

--with-openssl-opt=OPTIONS
为OpenSSL设置其他要编译的选项。

--with-debug
启用调试级别的日志。也可以手动修改主配置文件,使用"error_log /path/to/log debug;"指令设置调试级别的日志。

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
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
Last Updated: 9/20/2024, 9:08:12 PM