Nginx (engine x) 是一款轻量级的Web 服务器/反向代理服务器及电子邮件(IMAP/POP3)代理服务器,并在一个BSD-like 协议下发行。
支持FastCGI、SSL、Virtual Host、URL Rewrite、Gzip等功能。并且支持很多第三方的模块扩展。
常用做:HTTP代理、反向代理;负载均衡;处理web缓存等
其特点是占有内存少,并发能力强。
在国内广泛应用于互联网服务。
// 目前最新stable版本:nginx-1.14.2
ubuntu@VM-0-12-ubuntu:~/work$ wget http://nginx.org/download/nginx-1.14.2.tar.gz
ubuntu@VM-0-12-ubuntu:~/work$ sudo cp /etc/apt/sources.list /etc/apt/sources.list.old
ubuntu@VM-0-12-ubuntu:~/work$ sudo vim /etc/apt/source.list
# 添加如下内容
deb http://mirrors.aliyun.com/ubuntu/ trusty main multiverse restricted universe
deb http://mirrors.aliyun.com/ubuntu/ trusty-backports main multiverse restricted universe
deb http://mirrors.aliyun.com/ubuntu/ trusty-proposed main multiverse restricted universe
deb http://mirrors.aliyun.com/ubuntu/ trusty-security main multiverse restricted universe
deb http://mirrors.aliyun.com/ubuntu/ trusty-updates main multiverse restricted universe
deb-src http://mirrors.aliyun.com/ubuntu/ trusty main multiverse restricted universe
deb-src http://mirrors.aliyun.com/ubuntu/ trusty-backports main multiverse restricted universe
deb-src http://mirrors.aliyun.com/ubuntu/ trusty-proposed main multiverse restricted universe
deb-src http://mirrors.aliyun.com/ubuntu/ trusty-security main multiverse restricted universe
deb-src http://mirrors.aliyun.com/ubuntu/ trusty-updates main multiverse restricted universe
ubuntu@VM-0-12-ubuntu:~/work$ sudo apt-get update
// gcc、g++依赖库
ubuntu@VM-0-12-ubuntu:~/work$ sudo apt-get install build-essential
ubuntu@VM-0-12-ubuntu:~/work$ sudo apt-get install libtool
// pcre依赖库(http://www.pcre.org/)
ubuntu@VM-0-12-ubuntu:~/work$ sudo apt-get install libpcre3 libpcre3-dev
// zlib依赖库(http://www.zlib.net)
ubuntu@VM-0-12-ubuntu:~/work$ sudo apt-get install zlib1g-dev
// ssl依赖库
ubuntu@VM-0-12-ubuntu:~/work$ sudo apt-get install openssl
ubuntu@VM-0-12-ubuntu:~/work$ sudo tar -zxvf nginx-1.14.2.tar.gz
ubuntu@VM-0-12-ubuntu:~/work$ cd nginx-1.14.2/
ubuntu@VM-0-12-ubuntu:~/work$ sudo ./configure --prefix=/usr/local/nginx
ubuntu@VM-0-12-ubuntu:~/work$ sudo make
ubuntu@VM-0-12-ubuntu:~/work$ sudo make install
configure 参数:
可以通过 ./configure --help 命令查看;
–prefix=path
设置安装目录,默认为/usr/local/nginx–sbin-path=path
设置nginx可执行文件的路径和名称,默认–prefix/sbin/nginx,一般采用默认(如:–sbin-path=/home/nginx1)–conf-path
设置nginx.conf配件文件的路径,类似–sbin-path参数,默认指定–prefix/conf/nginx.conf(/home/nginx/nginx1.conf)。nginx启动时可以通过-c参数指定配件文件。–pid-path=path
设置存储主进程id的文件名称,默认为–prefix/logs/nginx.pid,安装完成以后,该名称也可以通过pid指令在nginx.conf配件文件中更改。–error-log-path=path
设置主请求的错误、警告、诊断的日志文件的名称,默认为–prefix/logs/access.log,安装完成后也可以在nginx.conf配件总指定error_log指令来修改。–http-log-path=path
设置HTTP服务器的主请求的日志文件的名称,默认为–prefix/logs/access.log。该名称也可以在nginx.conf配置文件中通过access_log指令更改。–user=name
设置工作进程使用的非特权用户的用户名,默认为nobody。安装完成后可以在nginx.conf中通过user指令修改。–group=name
设置工作进程使用的非特权用户组的名称,默认组名和–user的名称一致。安装完成后可以在nginx.conf配置文件中通过user指令指定。–with-select-module、–without-select-module
启用或者禁用一个模块–without-http_gzip_module
禁用构建gzip压缩模块。构建和运行该模块需要zlib库。–without-http_rewrite_module
禁止构建允许HTTP服务器重定向和变更请求URI的模块。构建和运行该模块需要PCRE库。–without-http_proxy_module
禁用HTTP服务器代理模块–with-http_ssl_module
启用添加HTTPS协议支持到HTTP服务器的模块,该模块默认不启用。构建和运行该模块需要OpenSSL库。–with-pcre=path
设置PCRE库的路径,该库需要从PCRE网站下载。location指令的正则表达支持需要该库。–with-zlib=path
设置zlib库的路径,ngx_http_gzip_module模块需要该库。
ubuntu@VM-0-12-ubuntu:~/work$ sudo vim /lib/systemd/system/nginx.service
[Unit]
Description=nginx - high performance web server
After=network.target remote-fs.target nss-lookup.target
[Service]
Type=forking
ExecStart=/usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf
ExecReload=/usr/local/nginx/sbin/nginx -s reload
ExecStop=/usr/local/nginx/sbin/nginx -s stop
[Install]
WantedBy=multi-user.target
// 说明
[Unit] // 服务的说明
Description // 描述服务
After // 依赖,当依赖的服务启动之后再启动自定义的服务
[Service] // 服务运行参数的设置
Type=forking // 后台运行的形式
ExecStart // 服务的具体运行命令(需要根据路径适配)
ExecReload // 重启命令(需要根据路径适配)
ExecStop // 停止命令(需要根据路径适配)
PrivateTmp=True // 表示给服务分配独立的临时空间
// 注意:启动、重启、停止命令全部要求使用绝对路径
[Install] // 服务安装的相关设置,可设置为多用户
Type:
Type=simple(默认值):systemd认为该服务将立即启动。服务进程不会fork。如果该服务要启动其他服务,不要使用此类型启动,除非该服务是socket激活型。
Type=forking:systemd认为当该服务进程fork,且父进程退出后服务启动成功。对于常规的守护进程(daemon),除非你确定此启动方式无法满足需求,使用此类型启动即可。使用此启动类型应同时指定 PIDFile=,以便systemd能够跟踪服务的主进程。
Type=oneshot:这一选项适用于只执行一项任务、随后立即退出的服务。可能需要同时设置 RemainAfterExit=yes使得systemd在服务进程退出之后仍然认为服务处于激活状态
Type=notify:与 Type=simple相同,但约定服务会在就绪后向systemd发送一个信号。这一通知的实现由 libsystemd-daemon.so提供。
Type=dbus:若以此方式启动,当指定的 BusName 出现在DBus系统总线上时,systemd认为服务就绪。
// 设置开机启动
ubuntu@VM-0-12-ubuntu:~/work$ sudo systemctl enable nginx.service
// 停止开机启动
ubuntu@VM-0-12-ubuntu:~/work$ sudo systemctl disable nginx.service
// 开启 nginx 服务
ubuntu@VM-0-12-ubuntu:~/work$ sudo systemctl start nginx.service
// 查看状态
ubuntu@VM-0-12-ubuntu:~/work$ sudo systemctl status nginx.service
// 重启服务
ubuntu@VM-0-12-ubuntu:~/work$ sudo systemctl restart nginx.service
// 查看所有服务
ubuntu@VM-0-12-ubuntu:~/work$ sudo systemctl list-units --type=service
官方配置说明文档:https://www.nginx.com/resources/wiki/start/
... #全局块
events {
#events块
...
}
http #http块
{
... #http全局块
server #server块
{
... #server全局块
location [PATTERN] #location块
{
...
}
location [PATTERN]
{
...
}
}
server
{
...
}
... #http全局块
}
// 1、全局块:配置影响nginx全局的指令。一般有运行nginx服务器的用户组,nginx进程pid存放路径,日志存放路径,配置文件引入,允许生成worker process数等。
// 2、events块:配置影响nginx服务器或与用户的网络连接。有每个进程的最大连接数,选取哪种事件驱动模型处理连接请求,是否允许同时接受多个网路连接,开启多个网络连接序列化等。
// 3、http块:可以嵌套多个server,配置代理,缓存,日志定义等绝大多数功能和第三方模块的配置。如文件引入,mime-type定义,日志自定义,是否使用sendfile传输文件,连接超时时间,单连接请求数等。
// 4、server块:配置虚拟主机的相关参数,一个http中可以有多个server。
// 5、location块:配置请求的路由,以及各种页面的处理情况。
worker_processes 1;
error_log logs/error.log info;
pid logs/nginx.pid;
events {
worker_connections 1024;
}
http {
include mime.types;
default_type application/octet-stream;
gzip on;
sendfile on;
keepalive_timeout 65;
server {
client_max_body_size 4G;
listen 1024;
server_name localhost;
root /home/ubuntu/nginx/files;
location / {
autoindex on; ##显示索引
autoindex_localtime on; ##显示时间
server_tokens off; ##隐藏版本号
autoindex_exact_size off; ##显示文件大概大小(K、M、G为单位)
if ($request_filename ~* ^.*?\.(txt|doc|pdf|rar|gz|zip|docx|exe|xlsx|ppt|pptx|jpg|png)$) {
##防止相关文件直接打开预览
add_header 'Content-Disposition' 'attachment;';
}
}
}
}
停止 nginx 服务
ubuntu@VM-0-12-ubuntu:~/work$ sudo service nginx stop
删除nginx,–purge包括配置文件
ubuntu@VM-0-12-ubuntu:~/work$ sudo apt-get --purge remove nginx
ubuntu@VM-0-12-ubuntu:~/work$
自动移除全部不使用的软件包
ubuntu@VM-0-12-ubuntu:~/work$ sudo apt-get autoremove
列出与nginx相关的软件 并删除显示的软件
ubuntu@VM-0-12-ubuntu:~/work$ dpkg --get-selections|grep nginx
ubuntu@VM-0-12-ubuntu:~/work$
ubuntu@VM-0-12-ubuntu:~/work$ sudo apt-get --purge remove nginx
ubuntu@VM-0-12-ubuntu:~/work$ sudo apt-get --purge remove nginx-common
ubuntu@VM-0-12-ubuntu:~/work$ sudo apt-get --purge remove nginx-core
验证
ubuntu@VM-0-12-ubuntu:~/work$ dpkg --get-selections|grep nginx # 不在显示 nginx 相关内容
ubuntu@VM-0-12-ubuntu:~/work$ which nginx # 不在显示 nginx 相关内容
// 删除 源码
ubuntu@VM-0-12-ubuntu:~/work$ sudo rm nginx-1.14.2.tar.gz nginx-1.14.2 -rf
// 删除 安装目录
ubuntu@VM-0-12-ubuntu:~/work$ sudo rm /usr/local/nginx -rf
// 删除 服务文件
ubuntu@VM-0-12-ubuntu:~/work$ sudo rm /lib/systemd/system/nginx.service
——2018-12-24——