什么是 Nginx
Nginx 是一款高性能的 http 服务器/反向代理服务器及电子邮件(IMAP/POP3)代理服务器。 由俄罗斯的程序设计师伊戈尔·西索夫(Igor Sysoev)所开发,官方测试 nginx 能够支撑 5 万并发链接,并且 cpu、内存等资源消耗非常低,运行非常稳定。
nginx 应用场景:
- http 服务器。Nginx 是一个 http 服务可以独立提供 http 服务。可以做网页静态服务器。
- 虚拟主机。可以是现在一台服务器虚拟出多个网站。例如个人网站使用的虚拟主机。
- 反向代理,负载均衡。当网站的访问量达到一定程度后,单台服务器不能满足用户的请求时,需要用多台服务器集群可以使用 nginx 做反向代理。并且多台服务器可以平均分担负载,不会因为某台服务器负载高宕机二某台服务器闲置的情况。
Linux 下安装 nginx
准备 nginx
- 下载:
# wget http://nginx.org/download/nginx-1.8.1.tar.gz
- 解压:
# tar -zxvf nginx-1.8.1.tar.gz
- 进入目录:
# cd nginx-1.8.1
配置 nginx
-
常用编译选项说明:
nginx 大部分常用模块,编译时./configure -- help
以--without
开头的都默认安装。-
--prefix=PATH
:指定 nginx 的安装目录。默认 /usr/local/nginx -
--conf-path=PATH
:设置 nginx.conf 配置文件的路径。nginx 允许通过命令行中的 -c 选项,使用不同的配置文件启动。默认为 /prefix/conf/nginx.conf -
--usr=name
:设置 nginx 工作进程的用户。安装完成后,可以随时在 nginx.conf 配置文件更改 user 指令。默认的用户名是 nobody。--group=name
类似 -
--with-pcre
:设置 PCRE 库的源码路径,如果以通过 yum 方式安装,使用--with-pcre
自动找到库文件。使用--with-pcre=PATH
时,需要从 PCRE 网站下载 pcre 库的源码并解压,剩下的就交给 Nginx 的./configure
和make
来完成。perl 正则表达式使用在location
指令和--ngx_http_rewrite_module
模块中 -
--with-zlib=PATH
:指定 zlib 的源码解压目录。在默认就启动的网络传输解压模块ngx-http_gzip_module
时需要使用 zlib。 -
--with-http_gzip_static_module
: 启动--with-http_gzip_static_module
支持。在线实时压缩输出数据流 -
--with-http_ssl_module
:使用 https 协议模块。默认情况下,该模块没有被构建。前提是 openssl 与 openssl-devel 已安装 -
--with-http_stub_status_module
:用来监控 nginx 的当前状态,获取 nginx 自上次启动以来的工作状态 -
--with-http_realip_module
:通过这个模块允许我们改变客户端请求头中客户端 IP 地址值(例如 X-Real-IP 或 X-Forwarded-For),意义在于能够使得后台服务器记录原始客户端的 IP 地址 -
--add-module=PATH
:通过第三方外部模块,如nginx-sticky-module-ng
或缓存模块。每次添加新的模块都要重新编译(Tengine 可以在新加入 module 时无需重新编译) -
--lock-path=/var/lock/nginx.lock
:安装文件锁定,防止安装文件被别人利用,或自己误操作 -
--with-http_flv_module
:启动--with-http_flv_module
支持。提供寻求内存使用基于事件的偏移量文件 -
--http-client-body-temp-path=/var/tmp/nginx/client/
:设定 http 客户端请求临时文件路径 -
--http-proxy-temp-path=/var/tmp/nginx/proxy/
:设定 http 代理临时文件路径 -
--http-fastcgi-temp-path=/var/tmp/nginx/fcgi/
:设定 http fastcgi 临时文件路径 -
--http-uwsgi-temp-path=/var/tmp/nginx/uwsgi
:设定 http uwsgi 临时文件路径 -
--http-scgi-temp-path=/var/tmp/nginx/scgi
:设定 http scgi 临时文件路径
-
Nginx 基本配置方案:
# ./configure --prefix=/usr/src/nginx --with-http_stub_status_module --with-http_ssl_module
也可使用 configure 命令创建一 makeFile 文件进行配置
./configure \
--prefix=/usr/local/nginx \
--pid-path=/var/run/nginx/nginx.pid \
--lock-path=/var/lock/nginx.lock \
--error-log-path=/var/log/nginx/error.log \
--http-log-path=/var/log/nginx/access.log \
--with-http_gzip_static_module \
--http-client-body-temp-path=/var/temp/nginx/client \
--http-proxy-temp-path=/var/temp/nginx/proxy \
--http-fastcgi-temp-path=/var/temp/nginx/fastcgi \
--http-uwsgi-temp-path=/var/temp/nginx/uwsgi \
--http-scgi-temp-path=/var/temp/nginx/scgi
执行后可以看到 MakeFile 文件
MakeFile 是一种配置文件,一个工程中的源文件不计数,其按类型、功能、模块分别放在若干个目录中,makefile 定义了一系列的规则来指定,哪些文件需要先编译,哪些文件需要后编译,哪些文件需要重新编译,甚至于进行更复杂的功能操作,因为 makefile 就像一个 shell 脚本一样,其中也可以执行操作系统的命令。
编译安装
# make && make install
nginx 启动与访问
注意:使用的是基本配置方案
进入安装目录:
# cd /usr/src/nginx/sbin
查看 nginx 版本:
# ./nginx -v
启动 nginx :
# ./nginx
启动后查看进程:
ps aux|grep nginx
-
设置开机启动:
- 编辑
/etc/rc.local
:# vim /etc/rc.local
- 添加一行:
/usr/src/nginx/sbin/nginx
,之后,开机会自动启动 nginx
- 编辑
停止 nginx:
# ./nginx -s stop
重启 nginx:
# ./nginx -s reopen
重新载入配置文件:
# ./nginx -s reload