Linux安装Nginx--两种方式

介绍

  Nginx是一个高性能的Web和反向代理服务器,它具有有很多非常优越的特性:
  作为Web服务器: 相比Apache,Nginx 使用更少的资源,支持更多 的并发连接,体现更高的效率,这点使Nginx尤其受到虚拟主机提供商的欢迎。能够支持高达50,000个并发连接数的响应,感谢Nginx为我们选择了epoll and kqueue作为开发模型.

  作为负载均衡服务器: Nginx 既可以在内部直接支持Rails和PHP,也可以支持作为HTTP代理服务器对外进行服务。Nginx 用C编写,不论是系统资源开销还是CPU使用效率都比Perlbal要好的多。
  作为邮件代理服务器: Nginx 同时也是一个非常优秀的邮件代理服务器(最早开发这个产品的目的之一也是作为邮件代理服务器),Last.fm 描述了成功并且美妙的使用经验。
  Nginx安装非常的简单,配置文件非常简洁(还能够支持perl语法),Bugs非常少的服务器: Nginx启动特别容易,并且几乎可以做到7*24不间断运行,即使运行数个月也不需要重新启动。你还能够在不间断服务的情况下进行软件版本的升级。

yum安装

yum仓库配置

  在/etc/yum.repos.d/下新建一个nginx.repo,加入nginx官方提供的源 , Installing NGINX Open Source

[nginx]
name=nginx repo
baseurl=http://nginx.org/packages/<OS>/<OSRELEASE>/$basearch/
gpgcheck=0
enabled=1

  注意其中的<OS> 为系统名,<OSRELEASE>为系统大版本

  1. CentOS7
    vi /etc/yum.repos.d/nginx.repo
    [nginx]
    name=nginx repo
    baseurl=http://nginx.org/packages/centos/7/$basearch/
    gpgcheck=0
    enabled=1
  2. CentOS6
    vi /etc/yum.repos.d/nginx.repo
    [nginx]
    name=nginx repo
    baseurl=http://nginx.org/packages/centos/6/$basearch/
    gpgcheck=0
    enabled=1

安装nginx

  1. 直接安装会安装当前的最新版本
    yum install -y nginx
  2. 该源仓库下有多个版本的nginx可供安装,可以用如下命令查看
    yum --showduplicates list nginx
  3. 选择其中一个版本安装
    yum install -y nginx-版本号
    # 如下
    yum install -y 1.18.0-1.el6.ngx

禁止更新

  我们在安装之后,为了能够正常运行,我们一般会禁止Nginx进行更新。因为在yum更新了Nginx之后,Nginx会自动重启。这对于我们来说是没有必要的,所以我们可以屏蔽更新。我们可以这样,将下列指定放到你的/etc/yum.conf文件中:

exclude=nginx

更新Nginx

  一般在生产环境,我们都是禁用更新的。所以说,这里只是作为一个参考
  我们需要执行的命令就是:

yum update nginx

   注意: 在使用 yum 更新之后,Nginx会自动重启。

命令管理

systemctl start nginx   # 启动
systemctl restart nginx # 重启
nginx -t                # 测试配置文件语法是否正确
systemctl reload nginx  # 重载配置文件
systemctl stop nginx    # 停止
systemctl enable nginx  # 启动开机启动
systemctl diasble nginx # 禁止开机启动

源代码安装

  如果已安装,则remove掉yum remove nginx

源码下载

  安装wget并下载nginx源码包, 去 http://nginx.org/download/ 可以找到历史版本的包

yum install -y wget && wget http://nginx.org/download/nginx-1.19.2.tar.gz

tar -zxvf nginx-1.19.2.tar.gz

新增用户

groupadd www
useradd -g www www

useradd -g www -s /sbin/nologin -M www

安装依赖环境

  1. 安装gcc
    安装 nginx 需要先将官网下载的源码进行编译,编译依赖 gcc 环境。安装指令如下:
    安装gcc
    yum -y install gcc automake autoconf libtool make
    安装g++
    yum install gcc gcc-c++
  2. 安装PCRE pcre-devel
    Nginx的Rewrite模块和HTTP核心模块会使用到PCRE正则表达式语法。这里需要安装两个安装包pcre和pcre-devel。第一个安装包提供编译版本的库,而第二个提供开发阶段的头文件和编译项目的源代码。安装指令如下:
    yum install -y pcre pcre-devel
  3. 安装zlib
    zlib库提供了开发人员的压缩算法,在Nginx的各种模块中需要使用gzip压缩。安装指令如下:
    yum install -y zlib zlib-devel
  4. 安装Open SSL
    nginx不仅支持 http协议,还支持 https(即在 ssl 协议上传输 http),如果使用了 https,需要安装 OpenSSL 库。安装指令如下:
    yum install -y openssl openssl-devel
    环境结束.

进行配置

没有特别配置,直接./configure就好了。安装完成后可以通过nginx -V查看选择的模块。

部分编译参数说明

参数 描述
--prefix 定义nginx安装路径
--sbin-path 定义nginx可执行文件路径
--modules-path nginx模块路径
--conf-path nginx配置文件路径
--error-log-path、--http-log-path 错误和访问日志路径
--with-openssl 定义编译使用的openssl,默认为系统自带openssl
--with-http_ssl_module ssl模块

[root@localhost ~]# ./configure --prefix=/usr/local/nginx \
--sbin-path=/usr/sbin/nginx \
--modules-path=/usr/lib64/nginx/modules \
--conf-path=/usr/local/nginx/nginx.conf \
--error-log-path=/usr/local/nginx/error.log \
--http-log-path=/usr/local/nginx/access.log \
--pid-path=/usr/local/nginx/nginx.pid \
--lock-path=/usr/local/nginx/nginx.lock \
--http-client-body-temp-path=/usr/local/nginx/client_temp \
--http-proxy-temp-path=/usr/local/nginx/proxy_temp \
--http-fastcgi-temp-path=/usr/local/nginx/fastcgi_temp \
--http-uwsgi-temp-path=/usr/local/nginx/uwsgi_temp \
--http-scgi-temp-path=/usr/local/nginx/scgi_temp \
--user=www \
--group=www \
--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

上面的编译是使用了系统默认的openssl,如果想使用更高版本的openssl进行编译的话。可以加上--with-openssl=openssl安装路径来自定义。高版本的openssl安装可以参考 这篇文章

--with-openssl 参数虽然可以指定 OpenSSL 路径,但只支持 OpenSSL 的源代码,不支持已编译好的 OpenSSL。每回更新 nginx 都要重新编译 OpenSSL 很麻烦 。以下是解决方案
打开nginx源码解压目录下的auto/lib/openssl/conf,找到所有带.openssl的行

CORE_INCS="$CORE_INCS $OPENSSL/.openssl/include"
CORE_DEPS="$CORE_DEPS $OPENSSL/.openssl/include/openssl/ssl.h"
CORE_LIBS="$CORE_LIBS $OPENSSL/.openssl/lib/libssl.a"
CORE_LIBS="$CORE_LIBS $OPENSSL/.openssl/lib/libcrypto.a"

改成下面的样子,去掉.openssl/

CORE_INCS="$CORE_INCS $OPENSSL/include"
CORE_DEPS="$CORE_DEPS $OPENSSL/include/openssl/ssl.h"
CORE_LIBS="$CORE_LIBS $OPENSSL/lib/libssl.a"
CORE_LIBS="$CORE_LIBS $OPENSSL/lib/libcrypto.a"

进行编译

[root@localhost ~]# ./configure --prefix=/usr/local/nginx \
--sbin-path=/usr/sbin/nginx \
--modules-path=/usr/lib64/nginx/modules \
--conf-path=/usr/local/nginx/nginx.conf \
--error-log-path=/usr/local/nginx/error.log \
--http-log-path=/usr/local/nginx/access.log \
--pid-path=/usr/local/nginx/nginx.pid \
--lock-path=/usr/local/nginx/nginx.lock \
--http-client-body-temp-path=/usr/local/nginx/client_temp \
--http-proxy-temp-path=/usr/local/nginx/proxy_temp \
--http-fastcgi-temp-path=/usr/local/nginx/fastcgi_temp \
--http-uwsgi-temp-path=/usr/local/nginx/uwsgi_temp \
--http-scgi-temp-path=/usr/local/nginx/scgi_temp \
--user=www \
--group=www \
--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-openssl=/usr/local/openssl \
--with-stream_ssl_preread_module

部分编译参数说明

参数选项 基本解释
–help 打印帮助信息
–prefix=PATH Nginx安装部署后的根目录 默认为/usr/local/nginx目录。注意:这个目标的设置会影响其他参数中的相对目录。例如,如果设置了–sbin-path=sbin/nginx,那么实际上可执行文件会被放到/usr/local/nginx/sbin/nginx中
–sbin-path=PATH 可执行文件的放置路径 <prefix>/sbin/nginx
–conf-path=PATH 配置文件的放置路径 <prefix>/conf/nginx.conf
–error-log-path=PATH error日志文件的放置路径。error日志用于定位问题,可输出多种级别(包括debug调试级别)的日志。它的配置非常灵活,可以在nginx.conf里配置为不同请求的日志并输出到不同的log文件中。这里是默认的Nginx核心日志路径 <prefix>/logs/error.log
–pid-path=PATH pid文件的存放路径。这个文件里仅以ASC II码存放着Nginx master的进程ID,有了这个进程ID,在使用命令行(例如nginx -s reload)通过读取master进程ID向master进程发送信号时,才能对运行中的Nginx服务产生作用 <prefix>/logs/nginx.pid
–lock-path=PATH lock文件的放置路径 <prefix>/logs/nginx.lock
–user=USER 指定Nginx worker进程运行时所属的用户。注意:不要将启动worker进程的用户设为root,在worker进程出问题时master进程要具备停止/启动worker进程的能力
–group=GROUP 指定Nginx worker进程运行时所属的组
–build=NAME configure执行时与编译期间产生的临时文件名称
–builddir=DIR configure执行时与编译期间产生的临时文件放置的目录,包括产生的Makefile、C源文件、目标文件、可执行文件等 <nginx source path>/objs
–with-rtsig_module 使用rtsig module处理事件驱动 默认情况下,Nginx是不安装rtsig module的,即不会把rtsig module编译进最终的Nginx二进制程序中
–with-select_module 使用select module处理事件驱动 select是Linux提供的一种多路复用机制,在epoll调用没有诞生前,例如在Linux 2.4及其之前的内核中,select用于支持服务器提供高并发连接 默认情况下,Nginx是不安装select module的,但如果没有找到其他更好的事件模块,该模块将会被安装
–without-select_module 不安装select module
–with-poll_module 使用poll module处理事件驱动 poll的性能与select类似,在大量并发连接下性能都远不如epoll。默认情况下,Nginx是不安装poll
–without-poll_module 不安装poll module
–with-file-aio 使用AIO方式处理事件驱动 (IO异步大幅度提升性能,需要内核 2.6.22 以上的版本)
–with-ipv6 使Nginx支持IPv6
–with-https_ssl_module 安装https ssl module。该模块使Nginx支持SSL协议,提供HTTPS服务。 注意:该模块的安装依赖于OpenSSL开源软件,即首先应确保已经在之前的参数中配置了OpenSSL需要安装 OpenSSL library yum install openssl-devel | # apt-get install libssl-dev
–with-https_spdy_module 开启 ngx_https_spdy_module 模块。是Google开发的基于TCP的应用层协议,用以最小化网络延迟,提升网络速度,优化用户的网络使用体验。SPDY并不是一种用于替代HTTP的协议,而是对HTTP协议的增强
–with-https_realip_module 开启 ngx_https_realip_module 模块 。此模块支持显示真实来源IP地址,主要用于NGINX做前端负载均衡服务器使用。
–with-https_addition_module 开启 https addtion module。该模块可以在返回客户端的HTTP包体头部或者尾部增加内容。作为一个输出过滤器,支持不完全缓冲,分部分响应请求,游戏服务器不必安装,门户网站可以安装,有利于被搜索引擎收录页面信息。
–with-https_xslt_module 开启 ngx_https_xslt_module 模块 这个模块可以使XML格式的数据在发给客户端前加入XSL渲染,0.7.8后面版本才可以使用。
–with-https_image_filter_module 开启 ngx_https_image_filter_module 模块 。这个模块将符合配置的图片实时压缩为指定大小(width*height)的缩略图再发送给用户,目前支持JPEG、PNG、GIF格式。 注意:这个模块依赖于开源的libgd库,在安装前确保操作系统已经安装了libgd,是nginx提供的集成图片处理模块,支持nginx-0.7.54以后的版本,在网站访问量不是很高磁盘有限不想生成多余的图片文件的前提下可,就可以用它实时缩放图片,旋转图片,验证图片有效性以及获取图片宽高以及图片类型信息,由于是即时计算的结果,所以网站访问量大的话,不建议使用。
–with-https_geoip_module 开启 ngx_https_geoip_module 模块,这个模块基于客户端的IP地址创建一些ngx_https_geoip_module变量,并与MaxMindGeoIP文件进行匹配,该模块仅用于0.7.63和0.8.6版本之后。 需要安装 yum install geoip-devel | apt-get install geoip-bin geoip-database libgeoip-dev
–with-https_sub_module 开启 ngx_https_sub_module 。该模块可以在Nginx返回客户端的HTTP响应包中将指定的字符串替换为自己需要的字符串 例如,在HTML的返回中,将替换为
–with-https_dav_module 开启 ngx_https_dav_module 模块。这个模块可以让Nginx支持Webdav标准,如支持Webdav协议中的PUT、DELETE、COPY、MOVE、MKCOL等请求 默认情况下为关闭,需编译开启,如果开启WebDAV扩展动作模块,(可为文件和目录指定权限)
–with-https_flv_module 开启 ngx_https_flv_module 模块 ,这个模块可以在向客户端返回响应时,对FLV格式的视频文件在header头做一些处理,使得客户端可以观看、拖动FLV视频
–with-https_mp4_module 开启 ngx_https_mp4_module 模块,该模块使客户端可以观看、拖动MP4视频
–with-https_gunzip_module 开启 ngx_https_gunzip_module 模块,是一个过滤器, 它为不支持“gzip”编码方法的客户端解压具有“Content-Encoding: gzip”头的响应。 当希望存储压缩后的数据以节省空间和减少I/O开销,又不希望对那些不支持gzip压缩的客户端造成不利影响时, 此模块会派上用途
–with-https_gzip_static_module 开启 ngx_https_gzip_static_module 模块 ,允许发送以“.gz”作为文件扩展名的预压缩文件,防止文件被重复压缩,以替代发送普通文件。如果采用gzip模块把一些文档进行gzip格式压缩后再返回给客户端,那么对同一个文件每次都会重新压缩,这是比较消耗服务器CPU资源的。
–with-https_auth_request_module 开启 ngx_https_auth_request_module 模块
–with-https_random_index_module 开启 ngx_https_random_index_module 模块 ,该模块在客户端访问某个目录时,随机返回该目录下的索引文件
–with-https_secure_link_module 开启 ngx_https_secure_link_module ,该模块提供一种验证请求是否有效的机制。例如,它会验证URL中需要加入的token参数是否属于特定客户端发来的,以及检查时间戳是否过期(计算和检查要求所需的安全链接网址(防盗链))
–with-https_degradation_module 开启 ngx_https_degradation_module 模块,该模块针对一些特殊的系统调用(如sbrk)做一些优化,允许在内存不足的情况下返回204或444码。
–with-https_stub_status_module 开启 ngx_https_stub_status_module 模块,该模块可以让运行中的Nginx提供性能统计页面,获取相关的并发连接、请求的信息
–without-https_charset_module 关闭 https charset module。这个模块可以将服务器发出的HTTP响应重编码
–without-https_gzip_module 关闭 ngx_https_gzip_module模块,在服务器发出的HTTP响应包中,这个模块可以按照配置文件指定的content-type对特定大小的HTTP响应包体执行gzip压缩
–without-https_ssi_module 关闭 ngx_https_ssi_module模块,该模块可以在向用户返回的HTTP响应包体中加入特定的内容,如HTML文件中固定的页头和页尾
–without-https_userid_module 关闭 ngx_https_userid_module模块,这个模块可以通过HTTP请求头部信息里的一些字段认证用户信息,以确定请求是否合法
–without-https_access_module 关闭 访问模块,这个模块可以根据IP地址限制能够访问服务器的客户端
–without-https_auth_basic_module 禁用基本的认证模块,这个模块可以提供最简单的用户名/密码认证
–without-https_autoindex_module 禁用自动索引模块,该模块提供简单的目录浏览功能
–without-https_geo_module 禁用Geo模块,这个模块可以定义一些变量,这些变量的值将与客户端IP地址关联,这样Nginx针对不同的地区的客户端(根据IP地址判断)返回不一样的结果,例如不同地区显示不同语言的网页
–without-https_map_module 禁用Map模块,这个模块可以建立一个key/value映射表,不同的key得到相应的value,这样可以针对不同的URL做特殊处理。例如,返回302重定向响应时,可以期望URL不同时返回的Location字段也不一样
–without-https_split_clients_module 切割客户端IP,该模块会根据客户端的信息,例如IP地址、header头、cookie等,来区分处理,nginx 的 Split Clients(切割客户端IP)的作用是使用 MurmurHash2 哈希算法对客户端的IP进行运算,得到一个32位的整数,这个数值范围从 0~4294967296,匹配不同的区间位置,得到不同的值赋予某个变量。最后根据这变量的不同,作不同的逻辑处理。
–without-https_referer_module 该模块可以根据请求中的referer字段来拒绝请求
–without-https_rewrite_module 禁用Rewrite模块,该模块提供HTTP请求在Nginx服务内部的重定向功能,依赖PCRE库
–without-https_proxy_module 禁用代理模块。该模块提供基本的HTTP反向代理功能
–without-https_fastcgi_module 禁用FastCGI模块。该模块提供FastCGI功能
–without-https_uwsgi_module 禁用uwsgi模块。该模块提供uWSGI功能
–without-https_scgi_module 禁用scqi模块。该模块提供SCGI功能
–without-https_memcached_module 禁用Memcached模块。该模块可以使得Nginx直接由上游的memcached服务读取数据,并简单地适配成HTTP响应返回给客户端
–without-https_limit_conn_module 禁用limit_conn_zone模块,该模块针对某个IP地址限制并发连接数。例如,使Nginx对一个IP地址仅允许一个连接。
–without-https_limit_req_module 禁用Limit Requests模块。该模块针对某个IP地址限制并发请求数
–without-https_empty_gif_module 禁用Empty Gif模块。该模块可以使得Nginx在收到无效请求时,立刻返回内存中的1×1像素的GIF图片。这种好处在于,对于明显的无效请求不会去试图浪费服务器资源
–without-https_browser_module 禁用Browser 模块。该模块会根据HTTP请求中的user-agent字段(该字段通常由浏览器填写)来识别浏览器
–without-https_upstream_hash_module 禁用Upstream模块。该模块用于配置负载均衡结构
–without-https_upstream_ip_hash_module 禁用Upstream模块 该模块提供当Nginx与后端server建立连接时,会根据IP做散列运算来决定与后端哪台server通信,这样可以实现负载均衡
–without-https_upstream_least_conn_module 禁用Upstream模块 中的 least 负载均衡算法
–without-https_upstream_keepalive_module 禁用Upstream模块 中的 keepalive 负载均衡算法
–with-https_perl_module 需要安装 perl # yum install perl-ExtUtils-Embed | # apt-get install libperl-dev
–with-perl_modules_path=PATH perl module放置的路径。只有使用了第三方的perl module,才需要配置这个路径
–with-perl=PATH perl binary放置的路径。如果配置的Nginx会执行Perl脚本,那么就必须要设置此路径
–https-log-path=PATH access日志放置的位置。每个HTTP请求到结束时都会记录 <prefix>/logs/access.log
–https-client-body-temp-path=PATH 处理HTTP请求时如果请求的包体需要暂时存放到临时磁盘文件中,则把这样的临时文件放置到该路径下 <prefix>/client_body_temp
–https-proxy-temp-path=PATH Nginx作为HTTP反向代理服务器时,上游服务器产生的HTTP包体在需要临时存放到磁盘文件时,这样的临时文件将放到该路径下 <prefix>/proxy_temp
–https-fastcgi-temp-path=PATH Fastcgi所使用临时文件的放置目录 <prefix>/fastcgi_temp
–https-uwsgi-temp-path=PATH uWSGI所使用临时文件的放置目录 <prefix>/uwsgi_temp
–https-scgi-temp-path=PATH SCGI所使用临时文件的放置目录 <prefix>/scgi_temp
–without-https 禁用HTTP服务
–without-https-cache 禁用HTTP 缓冲功能
–with-mail 开启邮件服务代理(mail server proxy)模块,支 持POP3, IMAP4和SMTP。该功能默认禁用
–with-mail_ssl_module 开启邮件代理服务对SSL的支持。该功能默认禁用
–without-mail_pop3_module 在邮件代理下禁用POP3功能。在开启邮件代理模块后该功能默认启用
–without-mail_imap_module 对邮件代理服务器禁用IMAP4模块,在开启邮件代理模块后该功能默认启用
–without-mail_smtp_module 对于邮件代理服务器禁用SMTP模块,在开启邮件代理模块后该功能默认启用
–with-google_perftools_module Google的针对nginx性能调优的工具,需要安装:yum install gperftools gperftools-devel
–with-cpp_test_module C预编译器测试模块
–add-module=PATH 当在Nginx里加入第三方模块时,通过这个参数指定第三方模块的路径
–with-cc=PATH C编译器的路径
–with-cpp=PATH C预编译器的路径
–with-cc-opt=OPTIONS 如果希望在Nginx编译期间指定加入一些编译选项,如指定宏或者使用-I加入某些需要包含的目录,这时可以使用该参数达成目的
–with-ld-opt=OPTIONS 最终的二进制可执行文件是由编译后生成的目标文件与一些第三方库链接生成的,在执行链接操作时可能会需要指定链接参数,–with-ld-opt就是用于加入链接时的参数。例如,如果我们希望将某个库链接到Nginx程序中,需要在这里加入–with-ld-opt=-llibraryName -LlibraryPath,其中libraryName是目标库的名称,libraryPath则是目标库所在的路径
–with-cpu-opt=CPU 指定CPU处理器架构,只能从以下取值中选择:pentium、pentiumpro、pentium3、pentium4、athlon、opteron、sparc32、sparc64、ppc64
–without-pcre 如果确认Nginx不用解析正则表达式,也就是说,nginx.conf配置文件中不会出现正则表达式,那么可以使用这个参数
–with-pcre 强制使用PCRE库
–with-pcre=DIR 指定PCRE库的源码位置,在编译Nginx时会进入该目录编译PCRE源码
–with-pcre-opt=OPTIONS 编译PCRE源码时希望加入的编译选项
–with-pcre-jit 编译PCRE库支持及时编译
–with-md5=DIR 指定SHA1库的源码位置,在编译Nginx时会进入该目录编译SHA1源码。 注意:OpenSSL中已经有了SHA1算法的实现。如果已经安装了OpenSSL,那么完全可以使用OpenSSL实现的SHA1算法
–with-md5-opt=OPTIONS 编译MD5源码时希望加入的编译选项
–with-md5-asm 使用MD5的汇编源码
–with-sha1=DIR 指定SHA1库的源码位置,在编译Nginx时会进入该目录编译SHA1源码。 注意:OpenSSL中已经有了SHA1算法的实现。如果已经安装了OpenSSL,那么完全可以使用OpenSSL实现的SHA1算法
–with-sha1-opt=OPTIONS 编译SHA1源码时希望加入的编译选项
–with-sha1-asm 使用SHA1的汇编源码
–with-zlib=DIR 指定zlib库的源码位置,在编译Nginx时会进入该目录编译zlib源码。如果使用了gzip压缩功能,就需要zlib库的支持
–with-zlib-opt=OPTIONS 编译zlib源码时希望加入的编译选项
–with-zlib-asm=CPU 指定对特定的CPU使用zlib库的汇编优化功能,目前仅支持两种架构:pentium和pentiumpro
–with-libatomic 强制使用atomic库。atomic库是CPU架构独立的一种原子操作的实现。它支持以下体系架构:x86(包括i386和x86_64)、PPC64、Sparc64(v9或更高版本)或者安装了GCC 4.1.0及更高版本的架构。
–with-libatomic=DIR atomic库所在的位置
–with-openssl=DIR 指定OpenSSL库的源码位置,在编译Nginx时会进入该目录编译OpenSSL源码。注意:如果Web服务器支持HTTPS,也就是SSL协议,Nginx要求必须使用OpenSSL。
–with-openssl-opt=OPTIONS 编译OpenSSL源码时希望加入的编译选项
–with-debug 将Nginx需要打印debug调试级别日志的代码编译进Nginx。这样可以在Nginx运行时通过修改配置文件来使其打印调试日志,这对于研究、定位Nginx问题非常有帮助

编译安装nginx

这里和redis的编译安装比较类似,首先在当前目录(/usr/local/nginx-1.19.2)进行编译。输入make即可

make

编译成功之后,就可以安装了,输入以下指令:

make install

ok,安装成功。

make && make install

设置开机启动

设置nginx开机启动,只需在rc.local增加启动代码即可。

vim /etc/rc.local

然后在底部增加/usr/local/nginx/sbin/nginx