nginx编译参数和配置参数笔记

编译参数:

 ./configure  --prefix=/etc/nginx --sbin-path=/usr/sbin/nginx --modules-path=/usr/lib64/nginx/modules --conf-path=/etc/nginx/nginx.conf --error-log-path=/var/log/nginx/error.log --http-log-path=/var/log/nginx/access.log --pid-path=/var/run/nginx.pid --lock-path=/var/run/nginx.lock --http-client-body-temp-path=/var/cache/nginx/client_temp --http-proxy-temp-path=/var/cache/nginx/proxy_temp --http-fastcgi-temp-path=/var/cache/nginx/fastcgi_temp --http-uwsgi-temp-path=/var/cache/nginx/uwsgi_temp --http-scgi-temp-path=/var/cache/nginx/scgi_temp --user=nginx --group=nginx --with-compat --with-file-aio --with-threads --with-http_addition_module --with-http_auth_request_module --with-http_dav_module --with-http_flv_module --with-http_gunzip_module --with-http_gzip_static_module --with-http_mp4_module --with-http_random_index_module --with-http_realip_module --with-http_secure_link_module --with-http_slice_module --with-http_ssl_module --with-http_stub_status_module --with-http_sub_module --with-http_v2_module --with-mail --with-mail_ssl_module --with-stream --with-stream_realip_module --with-stream_ssl_module --with-stream_ssl_preread_module --with-cc-opt='-O2 -g -pipe -Wall -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector-strong --param=ssp-buffer-size=4 -grecord-gcc-switches -m64 -mtune=generic -fPIC' --with-ld-opt='-Wl,-z,relro -Wl,-z,now -pie'

 

 

以下是选项的详细说明:

--prefix=/etc/nginx :指定Nginx安装的基本目录,即Nginx的根目录。但通常/etc/nginx用于存放配置文件,而非安装目录,这里可能是个特例或误用。

--sbin-path=/usr/sbin/nginx :指定Nginx可执行文件的路径。

--modules-path=/usr/lib64/nginx/modules :指定动态模块的存放路径。

--conf-path=/etc/nginx/nginx.conf :指定Nginx的主配置文件路径。

--error-log-path=/var/log/nginx/error.log :指定错误日志文件的路径。

--http-log-path=/var/log/nginx/access.log :指定访问日志文件的路径。

--pid-path=/var/run/nginx.pid :指定Nginx主进程ID文件的路径。

--lock-path=/var/run/nginx.lock :指定Nginx的锁文件路径,用于防止多个Nginx实例同时运行。

--http-client-body-temp-path=/var/cache/nginx/client_temp :指定客户端请求体的临时文件存放路径。

--http-proxy-temp-path=/var/cache/nginx/proxy_temp :指定代理服务的临时文件存放路径。

--http-fastcgi-temp-path=/var/cache/nginx/fastcgi_temp :指定FastCGI的临时文件存放路径。

--http-uwsgi-temp-path=/var/cache/nginx/uwsgi_temp :指定了uwsgi(如果存在的话)的临时文件路径。

--http-scgi-temp-path=/var/cache/nginx/scgi_temp :指定SCGI的临时文件存放路径。

--user=nginx  :指定Nginx运行时的用户。

--group=nginx :指定Nginx运行时的组。

--with-compat :启用对旧版本API的兼容性支持。

--with-file-aio :启用文件异步I/O

--with-threads :启用线程池支持。

--with-http_addition_module :允许Nginx在响应中添加额外的HTTP头部,或者修改现有的响应内容。

--with-http_auth_request_module :允许Nginx通过向另一个服务器发送子请求来执行身份验证。如果子请求返回特定的状态码(如200),则允许访问原始请求。

--with-http_dav_module :启用对WebDAV(基于Web的分布式创作和版本控制)协议的支持。

--with-http_flv_module :为FLVFlash视频)文件提供伪流功能,使得FLV文件可以被当作流媒体来传输。

--with-http_gunzip_module :允许Nginx在发送响应给客户端之前,自动解压缩gzip压缩的响应。

--with-http_gzip_static_module :如果请求的文件以.gz结尾,并且对应的非.gz文件存在,则Nginx会尝试直接发送.gz文件作为响应,而不是解压缩后再发送。

--with-http_mp4_module :为MP4文件提供伪流功能,类似于http_flv_module,但针对MP4视频。

--with-http_random_index_module :当请求一个目录时,随机选择一个文件作为目录的索引。

--with-http_realip_module :允许Nginx从请求头部(如X-Forwarded-For)中获取客户端的真实IP地址,并设置$remote_addr变量和$http_x_forwarded_for变量。

--with-http_secure_link_module :实现一个安全链接模块,该模块可以基于MD5散列值和过期时间检查链接的安全性。

--with-http_slice_module :允许Nginx将一个大文件分割成多个较小的部分(切片),并允许客户端单独请求这些部分。

--with-http_ssl_module :启用SSL支持,使得Nginx能够处理HTTPS请求。

--with-http_stub_status_module :提供一个状态页面,显示Nginx的各种状态信息,如活动连接数、接收和发送的数据量等。

--with-http_sub_module :允许Nginx在响应内容中查找并替换文本。

--with-http_v2_module :启用对HTTP/2协议的支持,HTTP/2是一种优化版的HTTP协议,旨在提高网络性能。

--with-mail :启用邮件代理模块

--with-mail_ssl_module :启用邮件代理模块的SSL支持。

--with-stream :这个选项启用了NginxTCP/UDP代理模块(也称为stream模块)。默认情况下,Nginx主要作为HTTPHTTPS的代理服务器。但是,通过启用stream模块,Nginx可以代理TCPUDP流量,使其能够作为邮件代理(SMTP/POP3/IMAP)、TCP负载均衡器或任何基于TCP/UDP的应用程序的代理。

--with-stream_realip_module :这个模块允许Nginx在处理streamTCP/UDP)流量时,从请求头部(如X-Forwarded-For)中获取客户端的真实IP地址,并设置$remote_addr变量。这对于在Nginx后面使用反向代理或负载均衡器时获取真实的客户端IP地址非常有用。

--with-stream_ssl_module :这个模块为Nginxstream模块添加了SSL/TLS支持。通过启用此模块,Nginx可以处理加密的TCP连接,如HTTPS(尽管HTTPS通常通过HTTP模块处理,但也可以用于其他基于TCP的加密协议)。这使得Nginx能够作为SSL/TLS终止点,解密传入的加密流量,并将其转发到后端的非加密服务。

--with-stream_ssl_preread_module  :这个模块提供了在SSL握手阶段读取客户端信息(如客户端证书或SNI)的能力,而无需完全解密和解析SSL/TLS数据包的内容。这对于需要根据客户端的SSL/TLS信息(如SNI,即服务器名称指示)来路由或重定向流量的场景特别有用。例如,您可以使用此模块来根据客户端请求的SSL证书或SNI将流量路由到不同的后端服务器。

--with-cc-opt='-O2 -g -pipe -Wall -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector-strong --param=ssp-buffer-size=4 -grecord-gcc-switches -m64 -mtune=generic -fPIC' :指定C编译器的优化选项,包括优化等级、调试信息、管道优化、Wall警告、安全特性等。

--with-ld-opt='-Wl,-z,relro -Wl,-z,now -pie':指定链接器的选项,增强安全性,如位置无关代码(PIE)和重定位只读段(RELRO)。

 

配置参数:

nginxstream模块配置举例:

 

stream {  

    # 定义TCP上游服务器组  

    upstream tcp_80 {  

        server 192.102.205.10:1080 weight=3;  

        server 192.102.201.59:1080 weight=2;  

    }  

 # 使用limit_conn_zone(注意:这要求Nginx版本支持stream模块的连接限制)  

 # 注意:stream模块中的limit_conn_zonelimit_conn的使用可能与HTTP模块有所不同  

 # 这里假设您的Nginx版本支持在stream模块中使用这些指令  

 # (实际上,直到Nginx 1.15.9stream模块中的连接限制还是实验性的)  

    limit_conn_zone $binary_remote_addr zone=limitbyservers:10m;  

    server {  

     listen 80;   

       # 应用连接限制(假设Nginx版本支持)  

        limit_conn limitbyservers 1000; # 这里可能需要根据实际情况调整限制数  

         # TCP代理设置  

         proxy_connect_timeout 10s;  

         proxy_timeout 5m;  

         proxy_pass tcp_80;  

         # 错误日志  

        error_log logs/test.log;  

     }  

 }

  

limit_conn_zone $binary_remote_addr zone=limitbyservers:10m; 这行指令的各个参数意义如下:

$binary_remote_addr:这是一个变量,表示客户端的IP地址。在Nginx中,$remote_addr 变量通常用于获取客户端的IP地址,但在定义限制区域时,使用 $binary_remote_addr 可以更高效地存储IP地址(因为它以二进制形式存储,占用的内存更少)。

zone=limitbyservers:这是为这个限制区域指定的名称,即 limitbyservers。在Nginx配置中,这个名称用于在后续的 limit_conn 指令中引用这个限制区域。

10m:这指定了为这个限制区域分配的内存大小,这里是10MBNginx使用这个内存来存储每个客户端的会话状态信息,以便跟踪和限制连接数。内存大小应该根据预期的并发连接数和每个会话状态所需的空间来设置。如果设置的内存太小,Nginx可能会因为内存不足而拒绝新的连接。

 

posted @ 2024-08-30 14:02  阿星777  阅读(34)  评论(0编辑  收藏  举报