Nginx 是什么
Nginx (engine x) 是一款轻量级的 Web 服务器 、反向代理服务器及电子邮件(IMAP/POP3)代理服务器。
什么是反向代理?
反向代理(Reverse Proxy)方式是指以代理服务器来接受 internet 上的连接请求,然后将请求转发给内部网络上的服务器,并将从服务器上得到的结果返回给 internet 上请求连接的客户端,此时代理服务器对外就表现为一个反向代理服务器。
Linux安装
源码编译方式安装
安装编译工具及库
Nginx 源码的编译依赖于 gcc 以及一些库文件,否则会安装失败。
$ yum -y install make zlib zlib-devel gcc-c++ libtool openssl openssl-devel
安装pcre
依赖库 ,作用是让 Nginx 支持 Rewrite
功能
-
下载合适的版本并解压 pcre下载,本教程选择最新版本
8.43
https://jaist.dl.sourceforge.net/project/pcre/pcre/8.44/pcre-8.44.tar.gz
wget -O /opt/pcre/pcre-8.43.tar.gz http://downloads.sourceforge.net/project/pcre/pcre/8.43/pcre-8.43.tar.gz cd /opt/pcre tar zxvf pcre-8.43.tar.gz
-
编译安装
cd /opt/pcre/pcre-8.43 ./configure make && make install
-
检查安装
pcre-config --version
编译安装Nginx
所有的前置软件及库已经全部安装完成,下面就可以编译安装Nginx了。
-
下载合适的Nginx版本并解压 Nginx下载
wget -O /opt/nginx/nginx-1.17.5.tar.gz http://nginx.org/download/ginx-1.17.5.tar.gz cd /opt/nginx tar zxvf nginx-1.17.5.tar.gz
-
编译安装
./configure --with-http_stub_status_module --with-http_ssl_module --with-pcre=/opt/pcre/pcre-8.43 make && make install
Nginx将被默认安装到 /usr/local/nginx 目录下。用户可以通过 ./configure –help 命令查看Nginx可选择的编译选项进行自定义安装配置。
Nginx的configure脚本支持以下选项
Ctrl + 鼠标左键跳转
-
检查安装
/usr/local/nginx -v
需注意如果Nginx启动正常,无错误日志,需要看下80端口是否开启。
$ firewall-cmd --zone=public --add-port=80/tcp --permanent $ firewall-cmd --reload
rpm包方式安装
-
wget http://nginx.org/packages/centos/7/noarch/RPMS/nginx-release-centos-7-0.el7.ngx.noarch.rpm
-
安装 Nginx rpm 的 yum源
rpm -ivh nginx-*.rpm
-
安装 rpm
yum install nginx
启动校验是否成功,也需要注意防火墙是否开启了80端口。
-
[Nginx 常用命令](#Nginx 常用命令)
Ctrl + 鼠标左键跳转
Windows 安装
-
下载合适版本 Nginx 下载
-
解压文件到本地磁盘
-
启动校验
start nginx
-
[Nginx 常用命令](#Nginx 常用命令)
Ctrl + 鼠标左键跳转
附录
Nginx的configure脚本支持以下选项
--prefix=<PATH> #Nginx安装路径。如果没有指定,默认为 /usr/local/nginx
--sbin-path=<PATH> #Nginx可执行文件安装路径。只能安装时指定,如果没有指定,默认为<prefix>/sbin/nginx
--conf-path=<PATH> #在没有给定-c选项下默认的nginx.conf的路径。如果没有指定,默认为<prefix>/conf/nginx.conf
--pid-path=<PATH> #在nginx.conf中没有指定pid指令的情况下,默认的nginx.pid的路径。如果没有指定,默认为 <prefix>/logs/nginx.pid
--lock-path=<PATH> #nginx.lock文件的路径
--error-log-path=<PATH> #在nginx.conf中没有指定error_log指令的情况下,默认的错误日志的路径。如果没有指定,默认为 <prefix>/logs/error.log
--http-log-path=<PATH> #在nginx.conf中没有指定access_log指令的情况下,默认的访问日志的路径。如果没有指定,默认为 <prefix>/logs/access.log。
--user=<USER> #在nginx.conf中没有指定user指令的情况下,默认的nginx使用的用户。如果没有指定,默认为 nobody
--group=<GROUP> #在nginx.conf中没有指定user指令的情况下,默认的nginx使用的组。如果没有指定,默认为 nobody
--builddir=DIR #指定编译的目录
--with-rtsig_module #启用 rtsig 模块
--with-select_module(--without-select_module) #允许或不允许开启SELECT模式,如果configure没有找到合适的模式,比如,kqueue(sun os)、epoll(linux kenel 2.6+)、rtsig(实时信号)或/dev/poll(一种类似select的模式,底层实现与SELECT基本相同,都是采用轮询的方法),SELECT模式将是默认安装模式
--with-poll_module(--without-poll_module) #允许或不允许开启POLL模式,如果没有合适的模式,比如:kqueue(sun os)、epoll(liunx kernel 2.6+),则开启该模式
--with-http_ssl_module #开启HTTP SSL模块,使NGINX可以支持HTTPS请求。这个模块需要已经安装了OPENSSL,在DEBIAN上是libssl
--with-http_realip_module #启用 ngx_http_realip_module
--with-http_addition_module #启用 ngx_http_addition_module
--with-http_sub_module #启用 ngx_http_sub_module
--with-http_dav_module #启用 ngx_http_dav_module
--with-http_flv_module #启用 ngx_http_flv_module
--with-http_stub_status_module #启用 "server status" 页
--without-http_charset_module #禁用 ngx_http_charset_module
--without-http_gzip_module #禁用 ngx_http_gzip_module. 如果启用,需要 zlib 。
--without-http_ssi_module #禁用 ngx_http_ssi_module
--without-http_userid_module #禁用 ngx_http_userid_module
--without-http_access_module #禁用 ngx_http_access_module
--without-http_auth_basic_module #禁用 ngx_http_auth_basic_module
--without-http_autoindex_module #禁用 ngx_http_autoindex_module
--without-http_geo_module #禁用 ngx_http_geo_module
--without-http_map_module #禁用 ngx_http_map_module
--without-http_referer_module #禁用 ngx_http_referer_module
--without-http_rewrite_module #禁用 ngx_http_rewrite_module. 如果启用需要 PCRE 。
--without-http_proxy_module #禁用 ngx_http_proxy_module
--without-http_fastcgi_module #禁用 ngx_http_fastcgi_module
--without-http_memcached_module #禁用 ngx_http_memcached_module
--without-http_limit_zone_module #禁用 ngx_http_limit_zone_module
--without-http_empty_gif_module #禁用 ngx_http_empty_gif_module
--without-http_browser_module #禁用 ngx_http_browser_module
--without-http_upstream_ip_hash_module #禁用 ngx_http_upstream_ip_hash_module
--with-http_perl_module #启用 ngx_http_perl_module
--with-perl_modules_path=PATH #指定 perl 模块的路径
--with-perl=PATH #指定 perl 执行文件的路径
--http-log-path=PATH #指定http默认访问日志的路径
--http-client-body-temp-path=PATH #指定http客户端请求缓存文件存放目录的路径
--http-proxy-temp-path=PATH #指定http反向代理缓存文件存放目录的路径
--http-fastcgi-temp-path=PATH #指定http FastCGI缓存文件存放目录的路径
--without-http #禁用 HTTP server
--with-mail #启用 IMAP4/POP3/SMTP 代理模块
--with-mail_ssl_module #启用 ngx_mail_ssl_module
--with-cc=PATH #指定 C 编译器的路径
--with-cpp=PATH #指定 C 预处理器的路径
--with-cc-opt=OPTIONS #设置C编译器的额外选项
--with-ld-opt=OPTIONS #设置链接的额外选项
--with-cpu-opt=CPU #为特定的 CPU 编译,有效的值包括:pentium, pentiumpro, pentium3, pentium4, athlon, opteron, amd64, sparc32, sparc64, ppc64
--without-pcre #禁止 PCRE 库的使用。同时也会禁止 HTTP rewrite 模块。在 "location" 配置指令中的正则表达式也需要 PCRE
--with-pcre=DIR #指定 PCRE 库的源代码的路径
--with-pcre-opt=OPTIONS #设置PCRE的额外编译选项
--with-md5=DIR #使用MD5汇编源码
--with-md5-opt=OPTIONS #设置MD5库的额外编译选项
--with-md5-asm #使用MD5汇编源码
--with-sha1=DIR #设置sha1库的源代码路径
--with-sha1-opt=OPTIONS #设置sha1库的额外编译选项
--with-sha1-asm #使用sha1汇编源码
--with-zlib=DIR #设置zlib库的源代码路径
--with-zlib-opt=OPTIONS #设置zlib库的额外编译选项
--with-zlib-asm=CPU #zlib针对CPU的优化,合法的值是: pentium, pentiumpro
--with-openssl=DIR #设置OpenSSL库的源代码路径
--with-openssl-opt=OPTIONS #设置OpenSSL库的额外编译选项
--with-debug #启用调试日志
--add-module=PATH #添加一个在指定路径中能够找到的第三方模块
Nginx 常用命令
nginx -s stop 快速关闭Nginx,可能不保存相关信息,并迅速终止web服务。
nginx -s quit 平稳关闭Nginx,保存相关信息,有安排的结束web服务。
nginx -s reload 因改变了Nginx相关配置,需要重新加载配置而重载。
nginx -s reopen 重新打开日志文件。
nginx -c filename 为 Nginx 指定一个配置文件,来代替缺省的。
nginx -t 不运行,仅仅测试配置文件。nginx 将检查配置文件的语法的正确性,并尝试打开配置文件中所引用到的文件。
nginx -v 显示 nginx 的版本。
nginx -V 显示 nginx 的版本,编译器版本和配置参数。