在安装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
目录:
image.png

conf目录:配置试例目录
configure脚本:生成中间文件
例:./configure —prefix=/home/jw/nginx,执行后会生成objs目录,用于存放将要编译的模块等相关信息
image.png
编译:make
安装make install
image.png

  • conf:配置目录
  • html:包含50X.html,index.html
  • logs:日志目录
  • sbin:启动文件

Nginx的编译参数

Parameter Description
—prefix= 默认值: /usr/local/nginx #这个目录
—sbin-path= 默认值: /sbin/nginx #,nginx是可执行文件名称
—conf-path= 默认值: /conf/nginx.conf #nignx的主配置文件
—pid-path= 默认值: /logs/nginx.pid #这是一个文件
—error-log-path= 默认值:/logs/error.log #这是一个文件
错误,告警,诊断数据的主日志记录文件
—http-log-path= 默认值:logs/access.log #这是一个文件
—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的第三方模块