文章主要介绍Linux系统安装Nginx服务器和Nginx模块配置的使用教程,从Nginx的安装开始细致入微地讲解各个常用模块的部署和参数使用,需要的朋友可以参考下。
1.安装nginx
1.1选择稳定版本
我们编译安装nginx来定制自己的模块,机器CentOS6.2x86_64。首先安装缺少的依赖包:
这些软件包如果yum上没有的话可以下载源码来编译安装,只是要注意编译时默认安装的目录,确保下面在安装nginx时能够找到这些动态库文件(ldconfig)。
从http://nginx.org/en/download.html下载稳定版nginx-1.6.3.tar.gz到/usr/local/src下解压。
为了后续准备我们另外下载2个插件模块:nginx_upstream_check_module-0.3.0.tar.gz——检查后端服务器的状态,nginx-goodies-nginx-sticky-module-ng-bd312d586752.tar.gz(建议在/usr/local/src下解压后将目录重命名为nginx-sticky-module-ng-1.2.5)——后端做负载均衡解决sessionsticky问题(与upstream_check模块结合使用需要另外打补丁,请参考nginx负载均衡配置实战)。
请注意插件与nginx的版本兼容问题,一般插件越新越好,nginx不用追新,稳定第一。nginx-1.4.7,nginx-sticky-module-1.1,nginx_upstream_check_module-0.2.0,这个搭配也没问题。sticky-1.1与nginx-1.6版本由于更新没跟上编译出错。(可以直接使用Tengine,默认就包括了这些模块)
1.2常用编译选项说明
nginx大部分常用模块,编译时https://www.zyhot.com/article/configure&8211;without开头的都默认安装。
1.3启动关闭nginx
当然也可以将nginx作为系统服务管理,下载nginx到/etc/init.d/,修改里面的路径然后赋予可执行权限。
1.4yum安装
yum安装rpm包会比编译安装简单很多,默认会安装许多模块,但缺点是如果你想以后安装第三方模块那就没办法了。
剩下的就yuminstallnginx搞定,也可以yuminstallnginx-1.6.3安装指定版本(前提是你去packages里看到有对应的版本,默认是最新版稳定版)。
2.nginx.conf配置文件Nginx配置文件主要分成四部分:main(全局设置)、server(主机设置)、upstream(上游服务器设置,主要为反向代理、负载均衡相关配置)和location(URL匹配特定位置后的设置),每部分包含若干个指令。main部分设置的指令将影响其它所有部分的设置;server部分的指令主要用于指定虚拟主机域名、IP和端口;upstream的指令用于设置一系列的后端服务器,设置反向代理及后端服务器的负载均衡;location部分用于匹配网页位置(比如,根目录“/”,“/images”,等等)。他们之间的关系式:server继承main,location继承server;upstream既不会继承指令也不会被继承。它有自己的特殊指令,不需要在其他地方的应用。
当前nginx支持的几个指令上下文:
下面的nginx.conf简单的实现nginx在前端做反向代理服务器的例子,处理js、png等静态文件,jsp等动态请求转发到其它服务器tomcat:
2.2常用指令说明
2.2.1main全局配置
nginx在运行时与具体业务功能(比如http服务或者email服务代理)无关的一些参数,比如工作进程数,运行的身份等。
woker_processes2在配置文件的顶级main部分,worker角色的工作进程的个数,master进程是接收并分配请求给worker处理。这个数值简单一点可以设置为cpu的核数grep^processor/proc/cpuinfo|wc-l,也是auto值,如果开启了ssl和gzip更应该设置成与逻辑CPU数量一样甚至为2倍,可以减少I/O操作。如果nginx服务器还有其它服务,可以考虑适当减少。
worker_cpu_affinity也是写在main部分。在高并发情况下,通过设置cpu粘性来降低由于多CPU核切换造成的寄存器等现场重建带来的性能损耗。如worker_cpu_affinity0001001001001000;(四核)。
worker_connections2048写在events部分。每一个worker进程能并发处理(发起)的最大连接数(包含与客户端或后端被代理服务器间等所有连接数)。nginx作为反向代理服务器,计算公式最大连接数=worker_processes*worker_connections/4,所以这里客户端最大连接数是1024,这个可以增到到8192都没关系,看情况而定,但不能超过后面的worker_rlimit_nofile。当nginx作为http服务器时,计算公式里面是除以2。
worker_rlimit_nofile10240写在main部分。默认是没有设置,可以限制为操作系统最大的限制65535。
useepoll写在events部分。在Linux操作系统下,nginx默认使用epoll事件模型,得益于此,nginx在Linux操作系统下效率相当高。同时Nginx在OpenBSD或FreeBSD操作系统上采用类似于epoll的高效事件模型kqueue。在操作系统不支持这些高效模型时才使用select。
2.2.2http服务器
与提供http服务相关的一些配置参数。例如:是否使用keepalive啊,是否使用gzip进行压缩等。
sendfileon:开启高效文件传输模式,sendfile指令指定nginx是否调用sendfile函数来输出文件,减少用户空间到内核空间的上下文切换。对于普通应用设为on,如果用来进行下载等应用磁盘IO重负载应用,可设置为off,以平衡磁盘与网络I/O处理速度,降低系统的负载。

send_timeout:用于指定响应客户端的超时时间。这个超时仅限于两个连接活动之间的时间,如果超过这个时间,客户端没有任何活动,Nginx将会关闭连接。
client_max_body_size10m:允许客户端请求的最大单文件字节数。如果有上传较大文件,请设置它的限制值
client_body_buffer_size128k:缓冲区代理缓冲用户端请求的最大字节数
模块http_proxy
这个模块实现的是nginx作为反向代理服务器的功能,包括缓存功能(另见文章)
模块http_gzip:
gzipon:开启gzip压缩输出,减少网络传输。
2.2.3server虚拟主机
http服务上支持若干虚拟主机。每个虚拟主机一个对应的server配置项,配置项里面包含该虚拟主机相关的配置。在提供mail服务的代理时,也可以建立若干server。每个server通过监听地址或端口来区分。
模块http_stream
这个模块通过一个简单的调度算法来实现客户端IP到后端服务器的负载均衡,upstream后接负载均衡器的名字,后端realserver以host:portoptions;方式组织在{}中。如果后端被代理的只有一台,也可以直接写在proxy_pass。
2.2.4location
http服务中,某些特定的URL对应的一系列配置项。
root/var/www/html定义服务器的默认网站根目录位置。如果locationURL匹配的是子目录或文件,root没什么作用,一般放在server指令里面或/下。
indexindex.jspindex.htmlindex.htm定义路径下默认访问的文件名,一般跟着root放
proxy_passhttp:/backend请求转向backend定义的服务器列表,即反向代理,对应upstream负载均衡器。也可以proxy_passhttp://ip:port。
proxy_redirectoff;proxy_set_headerHost$host;proxy_set_headerX-Real-IP$remote_addr;proxy_set_headerX-Forwarded-For$proxy_add_x_forwarded_for;这四个暂且这样设,如果深究的话,每一个都涉及到很复杂的内容,也将通过另一篇文章来解读。
关于location匹配规则的写法,可以说尤为关键且基础的,参考文章nginx配置location总结及rewrite规则写法;
2.3.1访问控制allow/deny
Nginx的访问控制模块默认就会安装,而且写法也非常简单,可以分别有多个allow,deny,允许或禁止某个ip或ip段访问,依次满足任何一个规则就停止往下匹配。如:
我们也常用httpd-devel工具的htpasswd来为访问的路径设置登录密码:
这样就生成了默认使用CRYPT加密的密码文件。打开上面nginx-status的两行注释,重启nginx生效。
2.3.2列出目录autoindex
Nginx默认是不允许列出整个目录的。如需此功能,打开nginx.conf文件,在location,server或http段中加入autoindexon;,另外两个参数最好也加上去:
autoindex_exact_sizeoff;默认为on,显示出文件的确切大小,单位是bytes。改为off后,显示出文件的大概大小,单位是kB或者MB或者GB
autoindex_localtimeon;默认为off,显示的文件时间为GMT时间。改为on后,显示的文件时间为文件的服务器时间
3.添加nginx模块时如何进行调试?
自己添加nginx模块时难免会出现错误,因此需要做好必要的调试工作。直接运行gdbnginx会出现:Nosymboltableinfoavailable。
本文来源:国外服务器--linuxnginx安装及配置教程
本文地址:https://www.idcbaba.com/guowai/6363.html
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 1919100645@qq.com 举报,一经查实,本站将立刻删除。




