一、Nginx介绍
1. 简介
Nginx(读作“engine x”)是一个高性能的开源HTTP和反向代理服务器。
高性能:可以处理大量的并发连接,并且具有响应速度快、资源消耗低的优点。
反向代理:可以作为反向代理服务器,负载均衡、动态内容缓存。
静态内容服务:可以快速地提供静态网页、图像、视频等静态内容的传输。
HTTP缓存:可以配置HTTP缓存策略,缓存静态内容和动态内容的响应,减轻后端服务器的负载。
安全性:具有安全性强的特点,可以进行安全的通信,支持SSL/TLS协议和HTTPS的加密连接。
2. 相关网站
Nginx官方下载文章来源:https://www.toymoban.com/news/detail-833687.html
3. 配置文件
worker_processes auto; # 开启业务进程数, 建议设置为CPU总核心数
worker_rlimit_nofile 51200; # 打开文件数的总和
events
{
use epoll; # 使用epoll模型
worker_connections 51200; # 客户端最大连接数
multi_accept on; # 同时接受多个连接请求
}
http
{
include mime.types; # 引入http mime类型
default_type application/octet-stream; # 默认文件类型
client_header_buffer_size 32k; # 接收用户请求中HTTP header部分时分配的内存buffer大小
large_client_header_buffers 4 32k; # 请求中的HTTP header超过client_header_buffer_size时生效
client_max_body_size 500m; # 允许客户端请求的最大单文件字节数
client_body_buffer_size 512k; # 缓冲用户端请求的最大字节数
proxy_connect_timeout 300; # 和后端服务器连接超时时间
proxy_read_timeout 300; # 连接成功后, 后端服务器响应超时时间
proxy_send_timeout 300; # 后端服务器数据回传超时时间
proxy_buffer_size 32k; # 保存用户头信息的缓冲区大小
proxy_buffers 4 64k; # proxy_buffers缓冲区
proxy_busy_buffers_size 128k; # 高负荷下缓冲大小(proxy_buffers*2)
proxy_temp_file_write_size 128k; # 缓存文件夹大小
# 当其中一台返回错误码时, 可以分配到下一台服务器程序继续处理
proxy_next_upstream error timeout invalid_header http_500 http_503 http_404; # 111
# 限制并发连接数以及下载带宽
limit_conn_zone $binary_remote_addr zone=perip:10m;
limit_conn_zone $server_name zone=perserver:10m;
sendfile on; # 开启高效文件传输模式
tcp_nopush on; # 防止网络阻塞
tcp_nodelay on; # 防止网络阻塞
keepalive_timeout 300; # 客户端连接保持活动的超时时间
# FastCGI配置, 改善网站的性能
fastcgi_connect_timeout 300;
fastcgi_send_timeout 300;
fastcgi_read_timeout 300;
fastcgi_buffer_size 64k;
fastcgi_buffers 4 64k;
fastcgi_busy_buffers_size 128k;
fastcgi_temp_file_write_size 256k;
fastcgi_intercept_errors on;
# gzip压缩配置
gzip on;
gzip_min_length 1k;
gzip_buffers 4 16k;
gzip_http_version 1.1;
gzip_comp_level 2;
gzip_types text/plain application/javascript application/x-javascript text/javascript text/css application/xml;
gzip_vary on;
gzip_proxied expired no-cache no-store private auth;
gzip_disable "MSIE [1-6]\.";
# 虚拟主机, 可以配置多个
server
{
listen 8080; # Nginx监听端口号
# 设置静态内容服务
location / {
alias /usr/share/nginx/html/;
}
# 设置反向代理
location /test/base/api/ {
proxy_pass http://127.0.0.1:8002/base/api/;
}
# 设置Nginx状态模块
location /nginx_status {
stub_status on;
access_log off;
allow 127.0.0.1;
deny all;
}
# 未匹配uri禁止访问
location ~ /\.
{
deny all;
}
}
}
二、location说明
1. 匹配规则
语法 | 匹配规则 | 优先级 |
---|---|---|
= | 精确匹配uri完整路径, 如果匹配成功,则立即处理请求 | 1 |
^~ | 前缀匹配,会匹配表达式最长的那个 | 2 |
~ | 区分大小写的正则匹配, 如果匹配成功,则立即处理请求 | 3 |
~* | 不区分大小写的正则匹配, 如果匹配成功,则立即处理请求 | 3 |
不带修饰符匹配,会匹配表达式最长的那个 | 4 | |
/ | 通用匹配 | 5 |
location /a/b/ { # 规则1
return 101;
}
location = /a/b/ { # 规则2
return 102;
}
location ^~ /a/b/c/ { # 规则3
return 103;
}
location ^~ /a/b/c/d/ { # 规则4
return 104;
}
location ~ /a/b/ { # 规则5
return 105;
}
location ~* /a/b/ { # 规则6
return 106;
}
location /b/c/ { # 规则7
return 107;
}
location /b/ { # 规则8
return 108;
}
location / { # 规则9
return 109;
}
# 精确匹配,返回状态码 102
curl -I http://127.0.0.1:8080/a/b/
# 前缀匹配,返回状态码 103
curl -I http://127.0.0.1:8080/a/b/c/d?e=1
# 前缀匹配,返回状态码 104
curl -I http://127.0.0.1:8080/a/b/c/d/e?f=1
# 区分大小写正则匹配,返回状态码 105
curl -I http://127.0.0.1:8080/a/b/c?d=1
# 不区分大小写正则匹配,返回状态码 106
curl -I http://127.0.0.1:8080/a/B/c?d=1
# 不带修饰符匹配,返回状态码 107
curl -I http://127.0.0.1:8080/b/c/d?e=1
# 不带修饰符匹配,返回状态码 108
curl -I http://127.0.0.1:8080/b/c?d=1
# 通用匹配,返回状态码 109
curl -I http://127.0.0.1:8080/b?d=1
2. 替换匹配部分
语法 | 说明 |
---|---|
proxy_pass不带/ | 把请求的path拼接到proxy_pass之后 |
proxy_pass带/ | 匹配成功的部分剪切掉后再拼接到proxy_pass之后 |
# 访问地址:http://127.0.0.1:8080/test/api
location /test/api {
proxy_pass http://127.0.0.1:8080;
}
# 访问地址:http://127.0.0.1:8080/api/
location /test/api/ {
proxy_pass http://127.0.0.1:8080/api/;
}
三、Nginx代理
1. Spring服务代理
# 前端静态内容
location /test/spring/ {
alias /usr/share/nginx/html/spring/;
}
# 后端接口反向代理
location /test/spring/api/ {
proxy_pass http://127.0.0.1:8080/spring/api/;
# nginx转发时保留原始请求域名信息
proxy_redirect off;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
2. MySQL代理
stream标签和http同级
文章来源地址https://www.toymoban.com/news/detail-833687.html
stream
{
allow 192.168.1.12;
deny all;
server
{
listen 3306;
proxy_pass 192.168.1.11:3306;
}
}
3. MinIO代理
location /test/minio/ {
proxy_pass http://192.168.1.11:9000/;
proxy_set_header Host $http_host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_connect_timeout 300;
proxy_http_version 1.1;
proxy_set_header Connection "";
chunked_transfer_encoding off;
}
到了这里,关于Nginx静态内容和反向代理的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!