Nginx 是一个高性能的HTTP和反向代理web服务器
Nignx的主要应用
Linux系统中安装Nginx
查看nginx版本号:
./nginx -v
普通启动nginx:
./nginx (切换到nginx安装目录的sbin目录下执行 )
通过配置文件启动
./nginx -c /opt/nginx/conf/nginx.conf (在sbin目录下执行)
/opt/nginx/sbin/nginx -c /opt/nginx/conf/nginx.conf
关闭nginx:
./nginx -s stop
优雅关闭nginx:(在处理完请求后关闭)
kill -QUIT 主pid
快速关闭nginx :(无论请求是否处理完成直接关闭)
kill -TERM 主pid
默认配置文件(把注释都删了)
worker_processes 1;
events {
worker_connections 1024;
}
http {
include mime.types;
default_type application/octet-stream;
sendfile on;
keepalive_timeout 65;
server {
listen 80;
server_name localhost;
location / {
root html;
index index.html index.htm;
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
}
}
第一部分:全局块
从配置文件开始到 events 块之间的内容,主要会设置一些影响nginx 服务器整体运行的配置指令,主要包括配 置运行 Nginx 服务器的用户(组)、允许生成的 worker process 数,进程 PID 存放路径、日志存放路径和类型以 及配置文件的引入等。
#配置worker进行的运行用户 nobody也是linux用户
#user nobody;
#user root;
#配置工作进程数目,根据硬件调整
worker_processes 1;
#配置全局错误日志及类型[debug | info | notice | warn | error | crit]默认是error
#error_log logs/error.log;
#error_log logs/error.log notice;
#error_log logs/error.log info;
#配置进程pid文件
#pid logs/nginx.pid;
第二部分:events块
events 块涉及的指令主要影响 Nginx 服务器与用户的网络连接,这部分的配置对 Nginx 的性能影响较大,在实际中应该灵活配置。
#配置工作模式和连接数
events {
#每个worker进程支持最大连接数为1024,上限为65535
worker_connections 1024;
}
第三部分:http块
#配置http服务器,利用它的反向代理功能提供负债均衡支持
http {
#配置nginx支持哪些多媒体类型,可以在conf/mine.type文件中查看支持哪些多媒体类型
include mime.types;
#默认文件类型
default_type application/octet-stream;
#配置日志格式
#log_format main '$remote_addr - $remote_user [$time_local] "$request" '
# '$status $body_bytes_sent "$http_referer" '
# '"$http_user_agent" "$http_x_forwarded_for"';
#配置日志的存放路径
#access_log logs/access.log main;
sendfile on; #开启高效文件输出
#tcp_nopush on; #防止网络阻塞(一般上线后都开启)
#keepalive_timeout 0;
keepalive_timeout 65; #长连接超时,单位是秒
#gzip on; #开启gzip压缩输出(一般上线后都开启)
#配置虚拟主机
server {
listen 80; #监听的端口号
server_name localhost; #配置服务名
#charset koi8-r; #配置字符集
#配置本主机的访问日志
#access_log logs/host.access.log main;
#默认的匹配/的请求,当访问路径中有/时会被该location匹配到并进行处理
location / {
#root是配置服务器的默认网站根目录位置,默认为nginx安装目录下的html目录
root html;
#配置首页文件的名称
index index.html index.htm;
}
#配置404页面
#error_page 404 /404.html;
#配置50x页面
# redirect server error pages to the static page /50x.html
#error_page 500 502 503 504 /50x.html;
#精准匹配
location = /50x.html {
root html;
}
}
#配置另外一台虚拟主机
#server {...}
}
实现效果: 打开浏览器地址栏上输入www.123.com,就跳转到Linux的tomcat的主页面
192.168.140.129 www.123.com (如果提示修改权限不够可以将host文件托到桌面改)
server_name 192.168.140.129
location / {
...
proxy_pass http://127.0.0.1:8080
}
测试
实现效果:根据访问路径跳转到不同的端口服务中,nginx监听端口为9001
访问http://192.168.140.129:9001/edu 就跳转到127.0.0.1:8080
访问http://192.168.140.129:9001/vod 就跳转到127.0.0.1:8081
server{
listen 9001;
server_name 192.168.140.129;
location ~/edu/{
proxy_pass http://localhost:8080;
}
location ~/vod/{
proxy_pass http://localhost:8081;
}
}
sudo firewall-cmd --add-port=8081/tcp --permanent
sudo firewall-cmd --add-port=9001/tcp --permanent
firewall-cmd --reload
测试
符号 | 含义 |
---|---|
= | 精确匹配。用于标准uri前,要求请求字符串和uri严格匹配。如果匹配成功,就停止匹配,立即执行该location里面的请求。 |
~ | 正则匹配。用于正则uri前,表示uri里面包含正则,并且区分大小写。 |
~* | 正则匹配。用于正则uri前,表示uri里面包含正则,不区分大小写。 |
^~ | 非正则匹配。用于标准uri前,nginx服务器匹配到前缀最多的uri后就结束,不会使用正则匹配。 |
无 | 普通匹配(最长字符匹配)。与location顺序无关,是按照匹配的长短来取匹配结果。若完全匹配,就停止匹配。 |
1、精准匹配
location =/ { #规则A }
location =/demo { #规则B }
#规则A匹配http://192.168.140.129/
#规则B匹配http://192.168.140.129/demo
2、正则匹配大小写敏感
location ~ /demo/ { #规则C }
#匹配 http://192.168.140.129/demo
#不匹配 http://192.168.140.129/Demo
3、正则匹配大小写不敏感
location ~ /demo/ { #规则D }
#匹配 http://192.168.140.129/demo
#匹配 http://192.168.140.129/Demo
4、^~只匹配以uri开头
location ^~ /img/ { #规则E }
#匹配 http://192.168.140.129/img
#匹配 http://192.168.140.129/img/a.jpg
#不匹配 http://192.168.140.129/vod/a.jpg
5、默认匹配
location / { #规则F }
以上都不匹配的时候就会匹配到规则F
匹配优先级:精准匹配(=) > |非正则匹配(^~) >正则匹配(~和~*) > 默认匹配
实现效果: 在浏览器地址栏输入http://192.168.140.129/edu/index.html 实现负载均衡
将请求均分到8080和8081端口
upstream myserver{
server 192.168.140.129:8080;
server 192.168.140.129:8081;
}
location / {
proxy_pass http://myserver;
root html;
index index.html index.htm;
}
测试
刷新页面
1、轮询(默认)
每个请求按时间顺序逐一分配不同的后端服务器,如果后端服务器逗down掉会自动删除
2、weight
weight表示权重,默认为1,权重越高被分配的客户端越多。指定轮询几率,weight和访问率成正比,用于后端服务器性能不均的情况
upstream myserver{
server 192.168.140.129:8080 weight=5;
server 192.168.140.129:8081 weight=10;
}
3、ip_hash
每个请求按照访问ip的hash结果分配,这样每个访客固定访问一个后端服务器,可以解决session的问题
upstream myserver{
ip_hash;
server 192.168.140.129:8080;
server 192.168.140.129:8081;
}
4、fair(第三方)
按照后端服务器的响应时间分配请求,响应时间短的优先分配
upstream myserver{
server 192.168.140.129:8080;
server 192.168.140.129:8081;
fair;
}
实现动静分离的两种方式:
具体步骤
html文件夹放中放了一个静态网页
image文件夹中放了一张图片
location /html/ {
root /static/;
index index.html index.htm;
}
location /image/{
root /static/;
autoindex on;
}
测试
版权说明 : 本文为转载文章, 版权归原作者所有 版权申明
原文链接 : https://blog.csdn.net/m0_60117382/article/details/123876650
内容来源于网络,如有侵权,请联系作者删除!