CentOS系统
配置nginx.repo
[nginx]
name=nginx repo
baseurl=http://nginx.org/packages/centos/7/$basearch/
gpgcheck=0
enabled=1
执行yum install nginx
Debian系统
wget http://nginx.org/keys/nginx_signing.key
sudo apt-key add nginx_signing.key
配置sources.list
deb http://nginx.org/packages/debian jessie nginx
deb-src http://nginx.org/packages/debian jessie nginx
执行sudo apt-get update && sudo apt-get install nginx
Currently, nginx packages are available for the following distributions and versions:
RHEL/CentOS:
[nginx]
name=nginx repo
baseurl=http://nginx.org/packages/OS/OSRELEASE/$basearch/
gpgcheck=0
enabled=1
Version Supported-Platforms
6.x x86_64, i386
7.4+ x86_64, ppc64le
Debian:
deb http://nginx.org/packages/debian/ codename nginx
deb-src http://nginx.org/packages/debian/ codename nginx
Version Codename Supported-Platforms
8.x jessie x86_64, i386
9.x stretch x86_64, i386
Ubuntu:
deb http://nginx.org/packages/ubuntu/ codename nginx
deb-src http://nginx.org/packages/ubuntu/ codename nginx
Version Codename Supported-Platforms
14.04 trusty x86_64, i386, aarch64/arm64
16.04 xenial x86_64, i386, ppc64el, aarch64/arm64
17.10 artful x86_64, i386
SLES:
zypper addrepo -G -t yum -c 'http://nginx.org/packages/sles/12' nginx
Version Supported Platforms
12 x86_64
On Debian/Ubuntu:
sudo apt-key add nginx_signing.key
On RHEL/CentOS:
sudo rpm --import nginx_signing.key
On SLES:
sudo rpm --import nginx_signing.key
worker_processes:进程启动数量
worker_connections:能够接受并发连接最大数量
include /opt/*.conf 如果没有给定全路径,会依据它的主配置文件路径进行搜索
sendfile 直接从一个文件描述符复制数据到另一个文件描述符
sendfile_max_chunk 设置复制数据的大小,这是为了组织worker的贪婪
reset_timeout_connection使用这个指令后,超时的连接会被立即关闭,释放相关内存,默认不立即关闭,处于FIN_WAIT1状态
tcp_nopush仅依赖于sendfile的使用,它能够使得一个数据包中尝试发送响应头以及在数据包中发送一个完整的文件
tcp_nodelay启用或禁用TCP_NODELAY,用于keep-alive连接
server_name: *.example | example.* | ~^www(\d+).example\.(com)$, 域名前~,启用正则表达式
Nginx请求匹配server过程
1.匹配IP地址和listen指定的端口
2.将Host头字段作为一个字符串匹配server_name
3.将Host头字段与server_name的开始部分匹配
4.将Host头字段与server_name的结尾部分匹配
5.将Host头字段与server_name正则表达式匹配
6.匹配失败,转向listen指令标记的default_server
7.所有匹配失败,转向第一个server的listen指令
location只能在server级别定义
= 精确匹配并且终止搜索
~ 区分大小写的正则表达式匹配
~* 不区分大小写的正则表达式匹配
^~ 如果该匹配是最佳的,则不再进行正则表达式检测,这不是正则表达式匹配,它的目的在于优先于正则表达式的匹配
try_files:将按照给定参数列出的顺序进行尝试,第一个被匹配的将被使用,经常用于从一个变量去匹配一个可能的文件,然后将处理传递到一个命名location,如try_files $uri $uri @loactionname; //location locationname {...}