Nginx简介和反向代理应用实践
Nginx简介
一、Nginx简介
- Nginx(engine x)是一个高性能的Web服务器和反向代理服务器,也可以作为邮件代理服务器。
- Nginx是由俄罗斯人Igor Sysoev采用C语言开发编写的,第一个公开版本发布于2004年。
- Nginx特点是占有内存少,并发处理能力强,以高性能、低系统资源消耗而闻名。官方测试为5万并发请求。
- 与Nginx同类型的Web服务器还有Apache、Lighttpd、Tengine(阿里巴巴)等。
- 作为负载均衡服务器:Nginx 既可以在内部直接支持 Rails 和 PHP,也可以支持作为 HTTP代理服务器 对外进行服务。
二、Nginx环境搭建
- 下载
官网地址:http://nginx.org/en/download.html
命令:wget http://nginx.org/download/nginx-1.16.1.tar.gz
- 安装
安装教程:https://www.runoob.com/linux/nginx-install-setup.html
安装目录:/usr/local/webserver/nginx
解压目录:/usr/local/src/nginx-1.16.1
【注】:修改配置文件在安装目录下的conf目录下
- 启动
1.启动有两种方式:
(1)普通启动:切换到nginx安装目录下的sbin目录,执行:./nginx
(2)通过配置文件启动:/usr/local/webserver/nginx/sbin/nginx -c /usr/local/webserver/nginx/conf/nginx.conf (-c代表指定配置文件)
2.检查是否启动成功:ps -ef | grep nginx
nginx体系结构由master进程和其worker进程组成,master进程读取配置文件,并维护worker进程,而worker进程对请求进行实际处理。
- 关闭
(1)处理完当前请求任务再关闭:
- 找出nginx的master进程号:ps -ef | grep nginx
- 执行命令:kill -QUIT 进程pid
(2)快速关闭:
- 找出nginx的master进程号:ps -ef | grep nginx
- 执行命令:kill -TERM 进程pid
- 其他
(1)重新载入配置文件:./nginx -s reload
(2)重启nginx:./nginx -s reopen
(3)停止nginx:./nginx -s stop
(4)配置检查(检查配置文件是否正确):./nginx -t
(5)查看版本:./nginx -v 、 ./nginx -V
二、Nginx配置文件
1.核心配置文件:nginx.conf,由三部分组成:基本配置、events配置、http配置
配置文件的完整配置说明:https://wenku.baidu.com/view/92bc8b8f680203d8ce2f2464.html
三、Nginx主要应用场景
静态网站、负载均衡、静态代理、动静分离、虚拟主机
反向代理
一、反向代理与正向代理
1. 反向代理方式是指以代理服务器来接受internet上的连接请求,然后将请求转发给内部网络上的服务器,并将从服务器上得到的结果返回给internet上请求连接的客户端,此时代理服务器对外表现为一个反向代理服务器。
2. 正向代理类似一个跳板机,代理访问外部资源。
写法:
server {
listen 80;
server_name localhost;
location / {
root html;
index index.html index.htm;
}
location ^~/hello/ {
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_X_forwarded_for;
proxy_pass http://127.0.0.1:8083;
}
}
二、Nginx配置
1. location配置方法详解
- 格式:location [ 空格 | = | ~ | ~* |^~ | !~ | !~* ] /uri/ {}
- 说明:
= 表示精确匹配
~ 表示区分大小写的正则匹配
~* 表示不区分大小写的正则匹配
^~ 表示优于正则表达式的匹配,如果该location是最佳匹配,则不再进行正则匹配
/ 表示通用匹配,如果没有其他匹配,任何请求都会匹配到
!~&&!~* 表示区分大小写不匹配的正则和不区分大小写的不匹配的正则
- 匹配的搜索顺序优先级:(location =) > (location 完整路径) > (location ^~ 路径) > (location ~,~* 正则顺序) > (location 部分起始路径) > (/)
【注】:当有匹配成功时,立即停止匹配,按照当前匹配规则处理请求。
- 末尾是否以“/”结尾:
- 没有“/”结尾时,location/abc/def可以匹配/abc/defghi请求,也可以匹配/abc/def/ghi等
- 而有“/”结尾时,location/abc/def/不能匹配/abc/defghi请求,只能匹配/abc/def/anything这样的请求
2. proxy_pass代理规则
- 格式: proxy_pass 空格URL (URL为要设置的被代理服务器的地址,包含传输协议、主机名称或IP地址加端口号、URI等要素。)
【注】:URL中是否含有URI,如果不包含,nginx服务器不会改变原地址的URI;如果包含了URI,则nginx服务器会使用新的URI替换原来的URI。
- 末尾是否以“/”结尾: