苏州网站建设设计制作公司,做一个电商网站多少钱,python下载安装教程,wordpress 内容摘要4 Nginx的rpm软件包安装 4.1 安装包在位置 D:\讲课内容--\新巴巴运动网\nginx高并发解决\nginx安装包 4.2 此种安装方式不用安装gcc等编译工具 4.3 安装命令如下 rpm –ivh nginx 5 配置虚拟主机 5.1 什么是虚拟主机 虚拟主机是一种特殊的软硬件技术#xff0c;它可以将网络上…4 Nginx的rpm软件包安装 4.1 安装包在位置 D:\讲课内容--\新巴巴运动网\nginx高并发解决\nginx安装包 4.2 此种安装方式不用安装gcc等编译工具 4.3 安装命令如下 rpm –ivh nginx 5 配置虚拟主机 5.1 什么是虚拟主机 虚拟主机是一种特殊的软硬件技术它可以将网络上的每一台计算机分成多个虚拟主机每个虚拟主机可以独立对外提供www服务这样就可以实现一台主机对外提供多个web服务每个虚拟主机之间是独立的互不影响的。 如下图 通过nginx可以实现虚拟主机的配置nginx支持三种类型的虚拟主机配置1、基于ip的虚拟主机 2、基于域名的虚拟主机 3、基于端口的虚拟主机 5.2 基于域名的虚拟主机配置 5.2.1 需求 两个域名指向同一台服务器用户访问不同的域名显示不同的网页内容。 两个域名是aaa.test.com和bbb.test.com 一台服务器还使用虚拟机192.168.101.3代替 5.2.2 创建工程目录 创建/usr/local/aaa_html此目录为aaa.test.com域名访问的目录 创建/usr/local/bbb_html此目录为bbb.test.com域名访问的目录 目录中的内容使用nginx自带的html文件将/usr/local/nginx/html中的内容拷贝分别拷贝到上边两个目录中并且将aaa_html目录中的index.html内容改为“Welcome to aaa nginx!” 将bbb_html目录中的index.html内容改为“Welcome to bbb nginx!” 5.2.3 虚拟主机配置 修改/usr/local/nginx/conf/nginx.conf文件添加两个虚拟主机如下 #配置虚拟主机aaa.test.com server { #监听的ip和端口配置本机ip和端口 listen 192.168.101.3:80; #虚拟主机名称是aaa.test.com请求域名aaa.test.com的url将由此server配置解析 server_name aaa.test.com; #所有的请求都以/开始所有的请求都可以匹配此location location / { #使用root指令指定虚拟主机目录即网页存放目录 #比如访问http://ip/test.html将找到/usr/local/aaa_html/test.html #比如访问http://ip/item/test.html将找到/usr/local/aaa_html/item/test.html root /usr/local/aaa_html; #指定欢迎页面按从左到右顺序查找 index index.html index.htm; } } #配置虚拟主机bbb.test.com server { listen 192.168.101.3:80; server_name bbb.test.com; location / { root /usr/local/bbb_html; index index.html index.htm; } } 6 nginx反向代理 6.1 什么是反向代理 通常的代理服务器只用于代理内部网络对Internet的连接请求客户机必须指定代理服务器,并将本来要直接发送到Web服务器上的http请求发送到代理服务器中由代理服务器向Internet上的web服务器发起请求最终达到客户机上网的目的。 而反向代理Reverse Proxy方式是指以代理服务器来接受internet上的连接请求然后将请求转发给内部网络上的服务器并将从服务器上得到的结果返回给internet上请求连接的客户端此时代理服务器对外就表现为一个反向代理服务器。 如下图 6.2 nginxtomcat反向代理 6.2.1 需求 两个tomcat服务通过nginx反向代理本例子使用三台虚拟机进行测试 nginx服务器192.168.101.3 tomcat1服务器192.168.101.5 tomcat2服务器192.168.101.6 如下图 6.2.2 启动tomcat tomcat使用apache-tomcat-7.0.57版本在192.168.101.5和192.168.101.6虚拟机上启动tomcat。 6.2.3 nginx反向代理配置 根据上边的需求在nginx.conf文件中配置反向代理如下 #配置一个代理即tomcat1服务器 upstream tomcat_server1 { server 192.168.101.5:8080; } #配置一个代理即tomcat2服务器 upstream tomcat_server2 { server 192.168.101.6:8080; } #配置一个虚拟主机 server { listen 80; server_name aaa.test.com; location / { #域名aaa.test.com的请求全部转发到tomcat_server1即tomcat1服务上 proxy_pass http://tomcat_server1; #欢迎页面按照从左到右的顺序查找页面 index index.jsp index.html index.htm; } } server { listen 80; server_name bbb.test.com; location / { #域名bbb.test.com的请求全部转发到tomcat_server2即tomcat2服务上 proxy_pass http://tomcat_server2; index index.jsp index.html index.htm; } } 6.2.4 测试 分别修改两个tomcat下的webapps/ROOT/index.jsp的内容使用tomcat1和tomcat2两个服务首页显示不同的内容如下 tomcat1下的index.jsp修改后 tomcat2下的index.jsp修改后 分别访问aaa.test.com、bbb.test.com测试反向代理。 请求访问aaa.test.com通过nginx代理访问tomcat1请求访问bbb.test.com通过nginx代理访问tomcat2。 7 负载均衡 7.1 什么是负载均衡 负载均衡 建立在现有网络结构之上它提供了一种廉价有效透明的方法扩展网络设备和服务器的带宽、增加吞吐量、加强网络数据处理能力、提高网络的灵活性和可用性。 负载均衡英文名称为Load Balance其意思就是分摊到多个操作单元上进行执行例如Web服务器、FTP服务器、企业关键应用服务器和其它关键任务服务器等从而共同完成工作任务。 7.2 nginx实现负载均衡 7.2.1 需求 nginx作为负载均衡服务器用户请求先到达nginx再由nginx根据负载配置将请求转发至 tomcat服务器。 nginx负载均衡服务器192.168.101.3 tomcat1服务器192.168.101.5 tomcat2服务器192.168.101.6 7.2.2 配置 根据上边的需求在nginx.conf文件中配置负载均衡如下 upstream tomcat_server_pool{ server 192.168.101.5:8080 weight10; server 192.168.101.6:8080 weight10; } server { listen 80; server_name aaa.test.com; location / { proxy_pass http://tomcat_server_pool; index index.jsp index.html index.htm; } } 7.2.3 测试 请求aaa.test.com通过nginx负载均衡将请求转发到tomcat服务器。 通过观察tomcat的访问日志或tomcat访问页面即可知道当前请求由哪个tomcat服务器受理。 8 nginx负载均衡高可用 8.1 什么是负载均衡高可用 nginx作为负载均衡器所有请求都到了nginx可见nginx处于非常重点的位置如果nginx服务器宕机后端web服务将无法提供服务影响严重。 为了屏蔽负载均衡服务器的宕机需要建立一个备份机。主服务器和备份机上都运行高可用High Availability监控程序通过传送诸如“I am alive”这样的信息来监控对方的运行状况。当备份机不能在一定的时间内收到这样的信息时它就接管主服务器的服务IP并继续提供负载均衡服务当备份管理器又从主管理器收到“I am alive”这样的信息时它就释放服务IP地址这样的主服务器就开始再次提供负载均衡服务。 8.2 keepalivednginx实现主备 8.2.1 什么是keepalived keepalived是集群管理中保证集群高可用的一个服务软件用来防止单点故障。 Keepalived的作用是检测web服务器的状态如果有一台web服务器死机或工作出现故障Keepalived将检测到并将有故障的web服务器从系统中剔除当web服务器工作正常后Keepalived自动将web服务器加入到服务器群中这些工作全部自动完成不需要人工干涉需要人工做的只是修复故障的web服务器。 8.2.2 keepalived工作原理 keepalived是以VRRP协议为实现基础的VRRP全称Virtual Router Redundancy Protocol即虚拟路由冗余协议。 虚拟路由冗余协议可以认为是实现路由器高可用的协议即将N台提供相同功能的路由器组成一个路由器组这个组里面有一个master和多个backupmaster上面有一个对外提供服务的vip该路由器所在局域网内其他机器的默认路由为该vipmaster会发组播当backup收不到VRRP包时就认为master宕掉了这时就需要根据VRRP的优先级来选举一个backup当master。这样的话就可以保证路由器的高可用了。 keepalived主要有三个模块分别是core、check和VRRP。core模块为keepalived的核心负责主进程的启动、维护以及全局配置文件的加载和解析。check负责健康检查包括常见的各种检查方式。VRRP模块是来实现VRRP协议的。 8.2.3 keepalivednginx实现主备过程 8.2.3.1 初始状态 8.2.3.2 主机宕机 8.2.3.3 主机恢复 8.2.4 高可用环境 两台nginx一主一备192.168.101.3和192.168.101.4 两台tomcat服务器192.168.101.5、192.168.101.6 8.2.5 安装keepalived 分别在主备nginx上安装keepalived D:\讲课内容--\新巴巴运动网\nginx高并发解决\高可用\keepalived\安装包 安装命令 查看openssl的版本要求必须是openssl-1.0.1e以上才行、如果版本已经符合、不用再安装openssl 非必须Rpm –Uvh openssl-1.0.1e-30.el6.8.i686.rpm 安装keepalived软件 rpm –ivh keepalived-1.2.13-5.el6_6.i686.rpm 8.2.6 配置keepalived 8.2.6.1 主nginx 修改主nginx下/etc/keepalived/keepalived.conf文件 ! Configuration File for keepalived #全局配置 global_defs { notification_email { #指定keepalived在发生切换时需要发送email到的对象一行一个 XXXXXX.com } notification_email_from XXXXXX.com #指定发件人 #smtp_server XXX.smtp.com #指定smtp服务器地址 #smtp_connect_timeout 30 #指定smtp连接超时时间 router_id LVS_DEVEL #运行keepalived机器的一个标识 } vrrp_instance VI_1 { state MASTER #标示状态为MASTER 备份机为BACKUP interface eth0 #设置实例绑定的网卡 virtual_router_id 51 #同一实例下virtual_router_id必须相同 priority 100 #MASTER权重要高于BACKUP 比如BACKUP为99 advert_int 1 #MASTER与BACKUP负载均衡器之间同步检查的时间间隔单位是秒 authentication { #设置认证 auth_type PASS #主从服务器验证方式 auth_pass 8888 } virtual_ipaddress { #设置vip 192.168.101.100 #可以多个虚拟IP换行即可 } } 8.2.6.2 备nginx 修改备nginx下/etc/keepalived/keepalived.conf文件 配置备nginx时需要注意需要修改state为BACKUP , priority比MASTER低virtual_router_id和master的值一致 ! Configuration File for keepalived #全局配置 global_defs { notification_email { #指定keepalived在发生切换时需要发送email到的对象一行一个 XXXXXX.com } notification_email_from XXXXXX.com #指定发件人 #smtp_server XXX.smtp.com #指定smtp服务器地址 #smtp_connect_timeout 30 #指定smtp连接超时时间 router_id LVS_DEVEL #运行keepalived机器的一个标识 } vrrp_instance VI_1 { state BACKUP #标示状态为MASTER 备份机为BACKUP interface eth0 #设置实例绑定的网卡 virtual_router_id 51 #同一实例下virtual_router_id必须相同 priority 99 #MASTER权重要高于BACKUP 比如BACKUP为99 advert_int 1 #MASTER与BACKUP负载均衡器之间同步检查的时间间隔单位是秒 authentication { #设置认证 auth_type PASS #主从服务器验证方式 auth_pass 8888 } virtual_ipaddress { #设置vip 192.168.101.100 #可以多个虚拟IP换行即可 } } 8.2.7 测试 主备nginx都启动keepalived及nginx。 service keepalived start ./nginx 8.2.7.1 初始状态 查看主nginx的eth0设置 vip绑定在主nginx的eth0上。 查看备nginx的eth0设置 vip没有绑定在备nginx的eth0上。 访问ccc.test.com可以访问。 8.2.7.2 主机宕机 将主nginx的keepalived停止或将主nginx关机(相当于模拟宕机)查看主nginx的eth0 eth0没有绑定vip 注意这里模拟的是停止 keepalived进程没有模拟宕机所以还要将nginx进程也停止表示主nginx服务无法提供。 查看备nginx的eth0 vip已经漂移到备nginx。 访问ccc.test.com可以访问。 8.2.7.3 主机恢复 将主nginx的keepalived和nginx都启动。 查看主nginx的eth0 查看备nginx的eth0 vip漂移到主nginx。 查看备nginx的eth0 eth0没有绑定vip 访问ccc.test.com正常访问。 注意主nginx恢复时一定要将nginx也启动通常nginx启动要加在开机启动中否则即使vip漂移到主nginx也无法访问。 8.2.8 解决nginx进程和keepalived不同时存在问题 8.2.8.1 问题描述 keepalived是通过检测keepalived进程是否存在判断服务器是否宕机如果keepalived进程在但是nginx进程不在了那么keepalived是不会做主备切换所以我们需要写个脚本来监控nginx进程是否存在如果nginx不存在就将keepalived进程杀掉。 8.2.8.2 nginx进程检测脚本 在主nginx上需要编写nginx进程检测脚本check_nginx.sh判断nginx进程是否存在如果nginx不存在就将keepalived进程杀掉check_nginx.sh内容如下 #!/bin/bash # 如果进程中没有nginx则将keepalived进程kill掉 Aps -C nginx --no-header |wc -l ## 查看是否有 nginx进程 把值赋给变量A if [ $A -eq 0 ];then ## 如果没有进程值得为 零 service keepalived stop ## 则结束 keepalived 进程 fi 将check_nginx.sh拷贝至/etc/keepalived下 脚本测试 将nginx停止将keepalived启动执行脚本sh /etc/keepalived/check_nginx.sh 从执行可以看出自动将keepalived进程kill掉了。 8.2.8.3 修改keepalived.conf 修改主nginx的keepalived.conf添加脚本定义检测 注意下边红色标识地方 #全局配置 global_defs { notification_email { #指定keepalived在发生切换时需要发送email到的对象一行一个 XXXXXX.com } notification_email_from miaoruntuitcast.cn #指定发件人 #smtp_server XXX.smtp.com #指定smtp服务器地址 #smtp_connect_timeout 30 #指定smtp连接超时时间 router_id LVS_DEVEL #运行keepalived机器的一个标识 } vrrp_script check_nginx { script /etc/keepalived/check_nginx.sh ##监控脚本 interval 2 ##时间间隔2秒 weight 2 ##权重 } vrrp_instance VI_1 { state MASTER #标示状态为MASTER 备份机为BACKUP interface eth0 #设置实例绑定的网卡 virtual_router_id 51 #同一实例下virtual_router_id必须相同 priority 100 #MASTER权重要高于BACKUP 比如BACKUP为99 advert_int 1 #MASTER与BACKUP负载均衡器之间同步检查的时间间隔单位是秒 authentication { #设置认证 auth_type PASS #主从服务器验证方式 auth_pass 8888 } track_script { check_nginx #监控脚本 } virtual_ipaddress { #设置vip 192.168.101.100 #可以多个虚拟IP换行即可 } } 修改后重启keepalived 8.2.8.4 测试 回到负载均衡高可用的初始状态保证主、备上的keepalived、nginx全部启动。 停止主nginx服务 观察keepalived日志 tail -f /var/log/keepalived.log 查看keepalived进程已经不存在。 查看eth0已经没有绑定vip。 9 nginx实现web缓存 9.1 什么是nginx的web缓存 http的request和response过程即客户端发起一个url请求到web服务器web服务器向客户端响应如果让客户端先请求给一个缓存服务器由缓存服务器中间转发请求至web服务器web服务器向客户端响应也是通过缓存服务器给客户端响应这个就是nginx的代理功能nginx不仅有代理功能还有缓存功能它可以将web服务器响应的信息缓存至内存或磁盘中当用户再次发起相同的url时nginx就不用请求缓存服务器而直接从缓存中取出响应给客户端从而大大提高请求响应的效率。如下图 9.2 proxy_cache缓存过程 proxy_cache是nginx内置的一个缓存模块它用于反向代理时对后端web服务的内容进行缓存。这里需要注意proxy_cache只在使用反向代理proxy_pass时进行缓存。 proxy_cache缓存过程如下 1、客户端第一次请求url比如请求ccc.test.com/index.html 2、nginx计算url的哈希值 md5(url) 即MD5(ccc.test.com/index.html)得到b5ac8d82f6ef789fe7081ef4a43f9230 3、创建缓存目录写入缓存数据 如果缓存目录的规则设置为 levels1:2创建目录如下 取出b5ac8d82f6ef789fe7081ef4a43f9230的最后一位0作为目录名创建目录再取出0前边的两位23作为目录名在0目录下边创建目录即一级目录为0二级目录名为23最后将代理获得的http响应数据存储在缓存数据文件中缓存文件命名为b5ac8d82f6ef789fe7081ef4a43f9230写入0/23目录下。 4、客户端再次请求相同的url对url进行哈希得到缓存数据文件的地址如果找到缓存数据则直接返回给客户端不再请求web服务器。 9.3 需求 1、对静态文件进行缓存html,js,css,png,gif,jpg,jpeg,bmp,swf。 2、对符合url规则的请求进行缓存。 3、针对某个url进行清除缓存。 9.4 安装ngx_cache_purge ngx_cache_purge是第三方开发的一个nginx模块不包含在 Nginx 的源码发布版它的作用是清理nginx缓存对FastCGI、proxy、SCGI 和uWSGI缓存进行清除。 9.4.1 解压ngx_cache_purge 将ngx_cache_purge-2.3.tar.gz拷贝至/usr/local/下 tar -zxvf ngx_cache_purge-2.3.tar.gz 9.4.2 nginx添加ngx_cache_purge模块 解压nginx-1.8.0至/usr/local/ cd /usr/local/ tar -zxvf nginx-1.8.0.tar.gz 进入nginx-1.8.0目录 cd nginx-1.8.0 下边的配置参数注意最后一行添加add-module/usr/local/ngx_cache_purge-2.3 ./configure \ --prefix/usr/local/nginx \ --pid-path/var/run/nginx/nginx.pid \ --lock-path/var/lock/nginx.lock \ --error-log-path/var/log/nginx/error.log \ --http-log-path/var/log/nginx/access.log \ --with-http_gzip_static_module \ --http-client-body-temp-path/var/temp/nginx/client \ --http-proxy-temp-path/var/temp/nginx/proxy \ --http-fastcgi-temp-path/var/temp/nginx/fastcgi \ --http-uwsgi-temp-path/var/temp/nginx/uwsgi \ --http-scgi-temp-path/var/temp/nginx/scgi \ --add-module/usr/local/ngx_cache_purge-2.3 编译、安装 make make install 9.5 缓存配置 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; #tcp_nopush on; #keepalive_timeout 0; keepalive_timeout 65; #gzip on; upstream tomcat_server_pool{ server 192.168.101.5:8080 weight10; server 192.168.101.6:8080 weight10; } #proxy_temp_path代理临时目录 proxy_temp_path /var/temp/nginx/proxy; #proxy_cache_path代理缓存目录和proxy_temp_path必须在同一个分区 #/var/temp/nginx/proxy_cache_dir缓存目录 #levels指定该缓存空间有两层hash目录第一层目录名是1个字母或数字长度第二层目录名为2个字母或数字长度 #keys_zonecache_one:50m缓存区名称为cache_one在内存中的空间是50Minactive1d表示1天清空一次缓存 max_size指定磁盘空间大小为500M proxy_cache_path /var/temp/nginx/proxy_cache_dir levels1:2 keys_zonecache_one:50m inactive1d max_size500m; server { listen 80; server_name ccc.test.com; #清空缓存配置注意必须放在最上边当在请求的url前加/purge/时将此url的缓存清空 location ~ /purge(/.*) { #安全设置指定请求客户端的IP或IP段才可以清除URL缓存这里为了方便测试设置为all #allow 127.0.0.1; allow all; #指定清空缓存的区域名称cache_one(要和上边proxy_cache_path缓存配置中指定的缓存区域名称一致) #指定缓存的key规则$host$1$is_args$args要和下边设置缓存的key一致$host$uri$is_args$args #注意$host$1$is_args$args中的$1表示当前请求的uri$host$1$is_args$args$host$uri$is_args$args proxy_cache_purge cache_one $host$1$is_args$args; } #所有的location规则都不满足走/使用proxy_pass将请求转发给tomcat location /{ proxy_pass http://tomcat_server_pool; index index.jsp index.html index.htm; } #请求url以/item/开头的进行缓存使用此location location ~ /item(/.*){ #指定缓存区域名称 proxy_cache cache_one; #以域名、URI、参数组合成Web缓存的Key值Nginx根据Key值哈希 proxy_cache_key $host$uri$is_args$args; #请求头中添加请求的主机名 proxy_set_header Host $host; #请求头中添加真实的客户端ip通过X-Forwarded-For可获取 proxy_set_header X-Forwarded-For $remote_addr; #代理访问后端tomcat #请求item从缓存中找如果缓存中没有则向tomcat请求 #$1表示取出正则表达式(/.*)所匹配的内容使用$1的效果例如请求http://ccc.test.com/item/100010.html则请求tomcat服务器 http://ip:port/100010.html #如果不使用$1则会将/item/...加在tomcat服务地址之后访问即http://ip:port/item/100010.html proxy_pass http://tomcat_server_pool$1; } #请求url以.html、js、css、png、gif结尾和此location匹配成功 location ~ \.( html|js|css|png|gif|jpg|jpeg|bmp|swf)$ { #如果后端的服务器返回502、504、执行超时等错误自动将请求转发到 upstream负载均衡池中的另一台服务器实现故障转移。 proxy_next_upstream http_502 http_504 error timeout invalid_header; proxy_cache cache_one; #对不同的HTTP状态码设置不同的缓存时间 proxy_cache_valid 200 10m; proxy_cache_valid 304 1m; proxy_cache_valid 301 302 1h; proxy_cache_valid any 1m; #以域名、URI、参数组合成Web缓存的Key值Nginx根据Key值哈希 proxy_cache_key $host$uri$is_args$args; proxy_set_header Host $host; proxy_set_header X-Forwarded-For $remote_addr; #如果没有缓存则通过proxy_pass转向tomcat请求 proxy_pass http://tomcat_server_pool; } } 9.6 测试 9.6.1 第一次请求 http://ccc.test.com/item/docs/ 观察后台tomcat的访问日志 9.6.2 第二次请求 http://ccc.test.com/item/docs/ 观察后台tomcat的访问日志没有发现请求日志 9.6.3 清空缓存 在浏览器请求http://ccc.test.com/purge/item/docs/ 说明清除缓存成功当再次刷新此地址则报404说明没有找到要清除的缓存文件 9.6.4 清除缓存后再次请求 请求http://ccc.test.com/item/docs/ 观察后台tomcat的访问日志 根据预期基本正确又请求了/docs/但是为什么没有第一次请求日志中的 因为在nginx.conf中配置了对静态资源文件的缓存所以/docs/images/asf-logo.gif也被缓存刚才清除缓存只是清除了http://ccc.test.com/item/docs/的缓存没有清除/docs/images/asf-logo.gif的缓存。 9.6.5 图片缓存清除 下边对/docs/images/asf-logo.gif的缓存清除 请求http://ccc.test.com/purge/item/docs/images/asf-logo.gif 9.6.6 再次请求 请求http://ccc.test.com/item/docs/ 观察后台tomcat的访问日志 思考下这次怎么没有/docs/的请求日志 10 附录 10.1 nginx编译参数 --prefix 指向安装目录 --sbin-path 指向执行程序文件nginx --conf-path 指向配置文件nginx.conf --error-log-path 指向错误日志目录 --pid-path 指向pid文件nginx.pid --lock-path 指向lock文件nginx.lock安装文件锁定防止安装文件被别人利用或自己误操作。 --user 指定程序运行时的非特权用户 --group 指定程序运行时的非特权用户组 --builddir 指向编译目录 --with-rtsig_module 启用rtsig模块支持实时信号 --with-select_module 启用select模块支持一种轮询模式,不推荐在高载环境下使用禁用--without-select_module --with-poll_module 启用poll模块支持功能与select相同与select特性相同为一种轮询模式,不推荐在高载环境下使用 --with-file-aio 启用file aio支持一种APL文件传输格式 --with-ipv6 启用ipv6支持 --with-http_ssl_module 启用ngx_http_ssl_module支持使支持https请求需已安装openssl --with-http_realip_module 启用ngx_http_realip_module支持这个模块允许从请求标头更改客户端的IP地址值默认为关 --with-http_addition_module 启用ngx_http_addition_module支持作为一个输出过滤器支持不完全缓冲分部分响应请求 --with-http_xslt_module 启用ngx_http_xslt_module支持过滤转换XML请求 --with-http_image_filter_module 启用ngx_http_image_filter_module支持传输JPEG/GIF/PNG 图片的一个过滤器默认为不启用。gd库要用到 --with-http_geoip_module 启用ngx_http_geoip_module支持该模块创建基于与MaxMind GeoIP二进制文件相配的客户端IP地址的ngx_http_geoip_module变量 --with-http_sub_module 启用ngx_http_sub_module支持允许用一些其他文本替换nginx响应中的一些文本 --with-http_dav_module 启用ngx_http_dav_module支持增加PUT,DELETE,MKCOL创建集合,COPY和MOVE方法默认情况下为关闭需编译开启 --with-http_flv_module 启用ngx_http_flv_module支持提供寻求内存使用基于时间的偏移量文件 --with-http_gzip_static_module 启用ngx_http_gzip_static_module支持在线实时压缩输出数据流 --with-http_random_index_module 启用ngx_http_random_index_module支持从目录中随机挑选一个目录索引 --with-http_secure_link_module 启用ngx_http_secure_link_module支持计算和检查要求所需的安全链接网址 --with-http_degradation_module 启用ngx_http_degradation_module支持允许在内存不足的情况下返回204或444码 --with-http_stub_status_module 启用ngx_http_stub_status_module支持获取nginx自上次启动以来的工作状态 --without-http_charset_module 禁用ngx_http_charset_module支持重新编码web页面但只能是一个方向--服务器端到客户端并且只有一个字节的编码可以被重新编码 --without-http_gzip_module 禁用ngx_http_gzip_module支持该模块同-with-http_gzip_static_module功能一样 --without-http_ssi_module 禁用ngx_http_ssi_module支持该模块提供了一个在输入端处理处理服务器包含文件SSI的过滤器目前支持SSI命令的列表是不完整的 --without-http_userid_module 禁用ngx_http_userid_module支持该模块用来处理用来确定客户端后续请求的cookies --without-http_access_module 禁用ngx_http_access_module支持该模块提供了一个简单的基于主机的访问控制。允许/拒绝基于ip地址 --without-http_auth_basic_module禁用ngx_http_auth_basic_module该模块是可以使用用户名和密码基于http基本认证方法来保护你的站点或其部分内容 --without-http_autoindex_module 禁用disable ngx_http_autoindex_module支持该模块用于自动生成目录列表只在ngx_http_index_module模块未找到索引文件时发出请求。 --without-http_geo_module 禁用ngx_http_geo_module支持创建一些变量其值依赖于客户端的IP地址 --without-http_map_module 禁用ngx_http_map_module支持使用任意的键/值对设置配置变量 --without-http_split_clients_module 禁用ngx_http_split_clients_module支持该模块用来基于某些条件划分用户。条件如ip地址、报头、cookies等等 --without-http_referer_module 禁用disable ngx_http_referer_module支持该模块用来过滤请求拒绝报头中Referer值不正确的请求 --without-http_rewrite_module 禁用ngx_http_rewrite_module支持该模块允许使用正则表达式改变URI并且根据变量来转向以及选择配置。如果在server级别设置该选项那么他们将在 location之前生效。如果在location还有更进一步的重写规则location部分的规则依然会被执行。如果这个URI重写是因为location部分的规则造成的那么 location部分会再次被执行作为新的URI。 这个循环会执行10次然后Nginx会返回一个500错误。 --without-http_proxy_module 禁用ngx_http_proxy_module支持有关代理服务器 --without-http_fastcgi_module 禁用ngx_http_fastcgi_module支持该模块允许Nginx 与FastCGI 进程交互并通过传递参数来控制FastCGI 进程工作。 FastCGI一个常驻型的公共网关接口。 --without-http_uwsgi_module 禁用ngx_http_uwsgi_module支持该模块用来医用uwsgi协议uWSGI服务器相关 --without-http_scgi_module 禁用ngx_http_scgi_module支持该模块用来启用SCGI协议支持SCGI协议是CGI协议的替代。它是一种应用程序与HTTP服务接口标准。它有些像FastCGI但他的设计更容易实现。 --without-http_memcached_module 禁用ngx_http_memcached_module支持该模块用来提供简单的缓存以提高系统效率 -without-http_limit_zone_module 禁用ngx_http_limit_zone_module支持该模块可以针对条件进行会话的并发连接数控制 --without-http_limit_req_module 禁用ngx_http_limit_req_module支持该模块允许你对于一个地址进行请求数量的限制用一个给定的session或一个特定的事件 --without-http_empty_gif_module 禁用ngx_http_empty_gif_module支持该模块在内存中常驻了一个1*1的透明GIF图像可以被非常快速的调用 --without-http_browser_module 禁用ngx_http_browser_module支持该模块用来创建依赖于请求报头的值。如果浏览器为modern 则$modern_browser等于modern_browser_value指令分配的值如果浏览器为old则$ancient_browser等于 ancient_browser_value指令分配的值如果浏览器为 MSIE中的任意版本则 $msie等于1 --without-http_upstream_ip_hash_module 禁用ngx_http_upstream_ip_hash_module支持该模块用于简单的负载均衡 --with-http_perl_module 启用ngx_http_perl_module支持该模块使nginx可以直接使用perl或通过ssi调用perl --with-perl_modules_path 设定perl模块路径 --with-perl 设定perl库文件路径 --http-log-path 设定access log路径 --http-client-body-temp-path 设定http客户端请求临时文件路径 --http-proxy-temp-path 设定http代理临时文件路径 --http-fastcgi-temp-path 设定http fastcgi临时文件路径 --http-uwsgi-temp-path 设定http uwsgi临时文件路径 --http-scgi-temp-path 设定http scgi临时文件路径 -without-http 禁用http server功能 --without-http-cache 禁用http cache功能 --with-mail 启用POP3/IMAP4/SMTP代理模块支持 --with-mail_ssl_module 启用ngx_mail_ssl_module支持 --without-mail_pop3_module 禁用pop3协议POP3即邮局协议的第3个版本,它是规定个人计算机如何连接到互联网上的邮件服务器进行收发邮件的协议。是因特网电子邮件的第一个离线协议标准,POP3协议允许用户从服务器上把邮件存储到本地主机上,同时根据客户端的操作删除或保存在邮件服务器上的邮件。POP3协议是TCP/IP协议族中的一员主要用于支持使用客户端远程管理在服务器上的电子邮件 --without-mail_imap_module 禁用imap协议一种邮件获取协议。它的主要作用是邮件客户端可以通过这种协议从邮件服务器上获取邮件的信息下载邮件等。IMAP协议运行在TCP/IP协议之上使用的端口是143。它与POP3协议的主要区别是用户可以不用把所有的邮件全部下载可以通过客户端直接对服务器上的邮件进行操作。 --without-mail_smtp_module 禁用smtp协议SMTP即简单邮件传输协议,它是一组用于由源地址到目的地址传送邮件的规则由它来控制信件的中转方式。SMTP协议属于TCP/IP协议族它帮助每台计算机在发送或中转信件时找到下一个目的地。 --with-google_perftools_module 启用ngx_google_perftools_module支持调试用剖析程序性能瓶颈 --with-cpp_test_module 启用ngx_cpp_test_module支持 --add-module 启用外部模块支持 --with-cc 指向C编译器路径 --with-cpp 指向C预处理路径 --with-cc-opt 设置C编译器参数PCRE库需要指定–with-cc-opt”-I /usr/local/include”如果使用select()函数则需要同时增加文件描述符数量可以通过–with-cc- opt”-D FD_SETSIZE2048”指定。 --with-ld-opt 设置连接文件参数。PCRE库需要指定–with-ld-opt”-L /usr/local/lib”。 --with-cpu-opt 指定编译的CPU可用的值为: pentium, pentiumpro, pentium3, pentium4, athlon, opteron, amd64, sparc32, sparc64, ppc64 --without-pcre 禁用pcre库 --with-pcre 启用pcre库 --with-pcre 指向pcre库文件目录 --with-pcre-opt 在编译时为pcre库设置附加参数 --with-md5 指向md5库文件目录消息摘要算法第五版用以提供消息的完整性保护 --with-md5-opt 在编译时为md5库设置附加参数 --with-md5-asm 使用md5汇编源 --with-sha1 指向sha1库目录数字签名算法主要用于数字签名 --with-sha1-opt 在编译时为sha1库设置附加参数 --with-sha1-asm 使用sha1汇编源 --with-zlib 指向zlib库目录 --with-zlib-opt 在编译时为zlib设置附加参数 --with-zlib-asm 为指定的CPU使用zlib汇编源进行优化CPU类型为pentium, pentiumpro --with-libatomic 为原子内存的更新操作的实现提供一个架构 --with-libatomic 指向libatomic_ops安装目录 --with-openssl 指向openssl安装目录 --with-openssl-opt 在编译时为openssl设置附加参数 --with-debug 启用debug日志转载于:https://www.cnblogs.com/chenglc/p/8043968.html