在安装nginx前要先安装依赖
- yum install -y openssl*
- yum -y install ncurses-devel
- yum install gcc gcc-c++
文档:http://www.nginx.cn/doc/index.html
下载
官方:http://nginx.org/en/download.html
wget http://nginx.org/download/nginx-1.17.1.tar.gz
目录:
conf目录:配置试例目录
configure脚本:生成中间文件
例:./configure —prefix=/home/jw/nginx,执行后会生成objs目录,用于存放将要编译的模块等相关信息
编译:make
安装make install
- conf:配置目录
- html:包含50X.html,index.html
- logs:日志目录
- sbin:启动文件
Nginx的编译参数
Parameter | Description |
---|---|
—prefix= |
默认值: /usr/local/nginx #这个目录 |
—sbin-path= |
默认值: |
—conf-path= |
默认值: |
—pid-path= |
默认值: |
—error-log-path= |
默认值: 错误,告警,诊断数据的主日志记录文件 |
—http-log-path= |
默认值: |
—user= |
默认值: nobody |
—group= |
默认值: —user执行的参数 |
—with-pcre= |
。。。 |
—with-pcre-jit | 。。。 |
—with-zlib= |
指明zlib库的源码展开路径。nginx的Gzip模块要用到。一般不配置 |
nginx的编译模块
默认编译进来的模块
如果要强制不编译进来,需要通过–without-
Module Name | Description |
---|---|
http_access_module | 默认是编译进ngx_http_accesss_module这个模块;这个模块主要是对客户端做访问控制 |
http_auth_basic_module | 默认是编译进ngx_http_auth_basic_module这个模块;这个模块主要是对客户端访问的资源做限制,可以做http的基本认证。(用户名和密码认证) |
http_autoindex_module | 默认是编译进ngx_http_autoindex_module这个模块;这个模块主要请求中的URI如果是以一个”/“结尾,可以配置自动展开目录列表的内容 |
http_browser_module | 默认是编译进ngx_http_browser_module这个模块;这个模块主要是根据HTTP请求报文中的”User-Agent”中值来控制用户不同浏览器识别的资源。 |
http_charset_module | 默认是编译进ngx_http_charset_module 这个模块;这个模块主要是和字符集控制相关的,非常重要; |
http_empty_gif_module | 默认是编译进ngx_http_empty_gif_module这个模块;这个模块主要用来产生单像素(1x1)透明的gif图 |
http_fastcgi_module | 默认是编译进ngx_http_fastcgi_module这个模块;这个模块主要用来允许把请求代理给后端的FastCGI服务器。 |
http_geo_module | 默认是编译进ngx_http_geo_module这个模块;设置模块主要用来根据不同的来源客户端请求的ip地址创建设置不同的变量值; |
http_gzip_module | 默认编译进ngx_http_gzip_module这个模块;这个模块的作用主要是提供gzip方法,去压缩响应报文的数据大小 |
http_limit_conn_module | 默认编译进ngx_http_limit_conn_module这个模块;这个模块的作用是用来做并发访问控制以及连接限制,常用于下载站点控制资源请求或者同一个ip地址同时的连接请求等; |
http_limit_req_module | 默认编译进ngx_http_limit_req_module这个模块;这个模块的作用也是用来限定处理每个请求的速率; |
http_map_module | 默认编译进ngx_http_map_module这个模块;这个模块的作用主要是通过其他变量的值来创建变量 |
http_memcached_module | 默认编译进ngx_http_memcached_module 这个模块;这个模块主要是和Memcached Server打交道的 |
http_proxy_module | 默认编译进ngx_http_proxy_module这个模块;这个模块主要是与代理相关的,把请求代理给后端服务器,常用于反向代理,以及和负载均衡结合的场景 |
http_referer_module | 默认编译进ngx_http_referer_module这个模块;这个模块主要是做外链限制的,和首部的”Referer”这个属性的值有关系。可以做资源防盗链,可以节省服务器带宽等 |
http_rewrite_module | 默认编译进ngx_http_rewrite_module这个模块;这个模块主要是与重写相关的,会用到PCRE正则表达式。 |
http_scgi_module | 默认编译进ngx_http_scgi_module这个模块;这个模块主要是把请求代理个SCGI服务器; |
http_ssi_module | 默认编译进ngx_http_ssi_module这个模块;这个模块目前有些指令目前还在开发。此模块主要用来处理服务端包含ssi文件 |
http_split_clients_module | 默认编译进ngx_http_split_clients_module这个模块;此模块的作用主要是支持用来创建变量来做A/B测试(分离测试) |
http_upstream_hash_module | 这个不涉及到具体的模块,不过它提供了负载均衡中用到的hash方法,很重要 |
http_upstream_ip_hash_module | 这个不涉及到具体的模块,不过它提供了负载均衡中用到的ip_hash方法,很重要 |
http_upstream_keepalive_module | 这个不涉及到具体的模块,不过它提供了负载均衡应用中关于连接缓存的控制相关属性 |
http_upstream_least_conn_module | 这个不涉及到具体的模块,不过它提供了负载均衡中的least_conn方法 |
http_upstream_zone_module | 这个不涉及到具体的模块,不过和负载均衡有关系,启用共享内存区域 |
http_userid_module | 默认编译进ngx_http_userid_module这个模块;这个模块主要与客户端连接的cookie相关,为客户端的身份识别设置相应的cookies |
http_uwsgi_module | 默认编译进ngx_http_uwsgi_module这个模块;这个模块主要是把连接请求代理给uwscgi主机 |
默认没有编译的模块
Module Name | Description |
---|---|
—with-cpp_test_module | 测试头文件对C++的兼容性; |
—with-debug | 启用调试日志;生产环境不会用 |
—with-file-aio | 启用FreeBSE和linux的异步IO;(AIO) |
—with-google_perftools_module | 涉及相关的模块为ngx_google_perftools_module |
—with-http_addition_module | 涉及相关的模块为ngx_http_addition_module,如果要编译,请指定这栏的选项。这个模块主要是在发送响应报文前后,增加说明性内容; |
—with-http_auth_request_module | 涉及相关的模块为ngx_http_auth_request_module,如果要编译进来,要指定这栏的选项。这个模块主要实现基于子请求的结果进行授权认证。 |
—with-http_dav_module | 这个模块主要是通过HTTP/1.1之后的一种新的叫做WebDAV 的协议来实现文件系统上文件的自动管理,建议测试环境可以玩一下,生产环境还是别编译进来 |
—with-http_degradation_module | |
—with-http_flv_module | |
—with-http_gunzip_module | 这个模块主要是兼容性设计的,对于有些连接请求的客户端本身不支持gzip压缩方法,这个模块可以帮助处理响应,因为大部分传输的数据是为了节约带宽以及传输时候的IO,所以有做压缩处理,现在一般很少有浏览器不支持压缩方法 |
—with-http_gzip_static_module | 这个模块实现了资源预压缩发送功能,大概就是不是请求的时候压缩资源,而是发送事先压缩好的以.gz为后缀的压缩文件 |
—with-http_mp4_module | |
—with-http_random_index_module | |
—with-http_realip_module | 当原始用户的请求经过代理(squid,proxy)转发之后,nginx接收到的请求的来源地址也就变成了该代理服务器的IP,于是乎nginx 就无法获取用户请求的真实IP地址了。 所以,一般我们会在Nginx之前的代理服务器中把请求的原始来源地址编码进某个特殊的HTTP请求头中,然后再在Nginx中把这个请求头中编码的地址恢复出来。这样Nginx中的后续处理阶段(包括Nginx背后的各种后端应用)就会认为这些请求直接来自那些原始的地址,代理服务器就仿佛不存在一样。ngx_realip模块正是用来处理这个需求的。可以把它编译进来,不过现在一般用nginx做反向代理服务器,nginx反向代理实现模块有其他机制把用户真实的ip返回给后端主机。 |
—with-http_secure_link_module | 用来对请求连接来源合法性进行检查,保护未经授权访问,限制链接的声明周期等,可以用来做资源链接保护,防盗链等。 |
—with-http_slice_module | 这个模块可以对大请求进行切割 |
—with-http_ssl_module | 一定要编译进来,现在走https协议几乎已经成为主流, |
—with-http_sub_module | 建议编译进来。这个模块主要实现,可以实现修改指定响应报文的内容 |
—with-http_v2_module | 这个模块主要是实现支持HTTP/2版本,也是这个ngx_http_spdy_module模块的替代。ngx_http_v2_module这个模块可以考虑编译进来,可能将来会成为主流 |
—with-mail_ssl_module | 这个模块是和邮件相关的,让邮件代理服务器支持SSL/TLS 协议 |
—with-stream_ssl_module | 这个模块主要是实现连接stream的过程也支持SSL/TLS 协议;stream模块,用来实现四层协议的转发、代理或者负载均衡等。 |
—with-threads | 这个选项主要是启用nginx使用线程池的功能支持。 |
—with-http_stub_status_module | 这个模块一定要编译进来,这个模块提供了nginx状态页信息,对于监控以及探测站点压力和请求非常有用,如果要配置状态页访问,一定要基于认证访问,这样是为了保证安全 |
—with-http_xslt_module | 涉及的模块为ngx_http_xslt_module。建议编译进来,这个模块需要libxml2和 libxslt 库的支持。 |
—with-mail | enables POP3/IMAP4/SMTP mail proxy server. 也是与邮件相关的选项,启用POP3/IMP4/SMTP邮件代理服务器; |
—with-stream | 涉及的模块为ngx_stream_core_module,nginx通过这个模块来实现的TCP/UDP的4层代理以及负载均衡。之前nginx只支持7层代理,nginx 1.9.0版本之后,就引入的这个强大的功能。 |
—add-module | nginx的第三方模块 |