Nginx [engine x] is an HTTP and reverse proxy server, a mail proxy server, and a generic TCP/UDP proxy server.
安装
RedHat
1 |
|
也可以先安装相关依赖,然后再安装nginx
1 |
|
Debian
Deepin 15.11 64 bit
1 |
|
命令
1 |
|
启动
1 |
|
reload
不中断当前服务的情况下,优雅的重新加载配置并生效。
1 |
|
quit
优雅停机
stop
快速停机
reopen
新打开日志文件
当日志文件很大了,先移走原日志文件,此时日志依然在向里面写入,然后reopen新开一个日志文件。
比如:
1 |
|
user
Defines user
and group
credentials used by worker processes.
1 |
|
非root用户启动会报如下警告,这是因为1024以下端口只有root才有权限,如果端口1024以上,则可忽略此警告。
1 |
|
work_processes
nginx has one master process
and several worker processes
.
The main purpose of the master process is to read and evaluate configuration, and maintain worker processes.
Worker processes do actual processing of requests.
日志
log_format
1 |
|
access_log
格式:access_log path [format] [gzip=level] [buffer=size] [flush=time]
1 |
|
error_log
1 |
|
虚拟主机
基于端口、ip或域名构建一个主机服务。nginx中server代表一个虚拟主机。
基于端口
1 |
|
基于IP
1 |
|
基于域名
1 |
|
server_name支持通配符(*)和正则表达式,优先级为精准匹配>以通配符开始的匹配>以通配符结束的匹配>正则匹配。例如:
1 |
|
default_server
目录列表
当index指令对应的文件不存在时,默认报错403 Forbidden
,可以开启目录列表支持。
1 |
|
http反向代理
1 |
|
1 |
|
socket/ftp等反向代理
1 |
|
load balance
round_robin
轮训,默认
ip_hash
1 |
|
least_conn
1 |
|
weight
1 |
|
proxy_pass
语法规则:proxy_pass URL
当URL中不含URI时,比如:http://192.168.78:8080,Nginx服务器不会改变原有地址的URI。
当URL中含有URI(port后面的/
也是uri)时,比如:http://192.168.78:8080/和http://192.168.78:8080/index,Nginx服务器会使用proxy_pass中的URI替换原地址URI中的location部分,比如:访问http://192.168.1.1/proxy/test.html时,
1 |
|
1 |
|
1 |
|
1 |
|
当location为正则匹配时,URL中不能包含uri
location
基于URI匹配,详情参见官方说明
语法规则:location [=|~|~*|^~] pattern { … }
=
:精确
匹配,比如= /
、= /abc
,优先级最高
^~
:表示前缀普通匹配
,优先级在正则匹配之前,一旦匹配成功,则不再去尝试正则匹配,比如:^~ /abcde/
~
:表示区分大小写的正则匹配
,比如:~ \.jps$
~*
:表示不区分大小写的正则匹配
,比如:~* \.jps$
uri
:表示前缀普通匹配
,优先级在正则匹配之后,比如:/
,/abcde/
,/abcde/abc/
/
:通用匹配,如果没有其它匹配,任何请求都会匹配到
普通匹配
与定义顺序无关,与长度有关,优先匹配更长的
正则匹配
与定义顺序相关
子文件
1 |
|
file表示文件,mask表示目录,可以使用通配符。
rewrite
rewrite用于重写或重定向。
1 |
|
flag取值:
参数值 | 说明 | |
---|---|---|
last | 终止rewrite,继续匹配其他规则 | 用于重写 |
break | 终止rewrite,不再继续匹配其他规则 | 用于重写 |
redirect | 临时重定向,返回的HTTP状态码为302 | 用于重定向 |
permanent | 永久重定向,返回的HTTP状态码为301 | 用于重定向 |
比如:
1 |
|
proxy_redirect
proxy_redirect http:// https://;
变量
$host
proxy_set_header Host $host; $host就是代理服务器,也就是客户端请求的host
$proxy_host
proxy_set_header Host $proxy_host; $proxy_host就是服务器自己
$proxy_port:代表服务器自己的服务端口
$remote_addr
$http_x_forwarded_for
$proxy_add_x_forwarded_for
$scheme
1 |
|
alias
1 |
|
Q&A
302
nginx配置
1 |
|
spring boot中新增配置
1 |
|
如果nginx的ip地址不在范围(10/8,192.168/16,169.254/16,127/8,172.16/12和0:0:0:0:0:0:0:1|::1
),则需要而外配置,比如:
1 |
|