自学内容网 自学内容网

Nginx静态内容和反向代理


一、Nginx介绍

1. 简介

Nginx(读作“engine x”)是一个高性能的开源HTTP和反向代理服务器。
高性能:可以处理大量的并发连接,并且具有响应速度快、资源消耗低的优点。
反向代理:可以作为反向代理服务器,负载均衡、动态内容缓存。
静态内容服务:可以快速地提供静态网页、图像、视频等静态内容的传输。
HTTP缓存:可以配置HTTP缓存策略,缓存静态内容和动态内容的响应,减轻后端服务器的负载。
安全性:具有安全性强的特点,可以进行安全的通信,支持SSL/TLS协议和HTTPS的加密连接。

2. 相关网站

Nginx官方下载

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同级

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;
}

原文地址:https://blog.csdn.net/qq_42308751/article/details/135814516

免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!