Nginx
反向代理
简单示例
修改nginx的default.conf文件,修改后如下
server{
listen 80; # 监听80端口
server_name localhost; # 请求的域名
location /proxy {
proxy_pass http://87.68.103.145:8001;
}
}
最主要的就是proxy_pass这行代码,这时nginx作为一个代理服务器(请求到nginx,然后nginx再去找目标服务器)
大白话就是:访问localhost:80/proxy/api/index将被Nginx处理为http://87.68.103.145:8001/proxy/api/index
即达到端口号转化的效果
此处注意不要在末尾多加/
通过正则表达式匹配进行反向代理
location ~ /proxy/ { proxy_pass http://47.98.203.175:8001; } location ~ /proxy2/ { proxy_pass http://47.98.203.175:8080; }
主要区别就是多了~,一定要有路径末尾的/
即[~ /xxx/] 这种路径配置就是正则,nginx会根据你输入的路径中是否包含此内容来匹配要代理到哪一个服务器。
Rewrite重写
简单示例
location /api {
rewrite /api/(.*) /$1 break;
proxy_pass http://localhost:8080;
}
- /api/(.*) 是匹配模式,其中 (.*) 是一个正则表达式,表示匹配任意字符序列(除了换行符 \n)
- /$1 是重写后的 URL 格式。$1 表示正则表达式中的第一个捕获组,也就是 (.*) 匹配到的内容
- break 是 Nginx 的指令,表示停止执行当前的 rewrite 规则,并继续处理请求
举个例子,如果请求的 URL 是 /api/data,那么经过这个 rewrite 规则处理后,将被重写为 /data,然后交由后续的 Nginx 配置来处理
语法格式
rewrite regex replacement [flag];
flag有如下值:
- last: 本条规则匹配完成后,继续向下匹配新的location URI 规则。(不常用)
- break: 本条规则匹配完成即终止,不再匹配后面的任何规则(不常用)。
- redirect: 返回302临时重定向,浏览器地址会显示跳转新的URL地址。
- permanent: 返回301永久重定向。浏览器地址会显示跳转新的URL地址。
负载均衡
1、修改nginx.conf(在http块中添加如下代码)
# 配置负载均衡 方案一:轮询 (一个接一个访问) upstream myserver{ server 192.168.50.130:8080; server 192.168.50.131:8080; } # 配置负载均衡 方案二:weight (权重 数值越大,访问的频率越大) # upstream myserver{ # server 192.168.50.130:8080 weight=10; # server 192.168.50.131:8080 weight=5; # } # 配置负载均衡 方案三:ip_hash (哈希 每个请求按访问 ip 的 hash 结果分配,这样每个访客固定访问一个后端服务器,可以解决 session 的问题) # upstream myserver{ # ip_hash; # server 192.168.50.130:8080; # server 192.168.50.131:8080; # } # 配置负载均衡 方案四:fair (第三方 按后端服务器的响应时间来分配请求,响应时间短的优先分配) # upstream myserver{ # fair; # server 192.168.50.130:8080; # server 192.168.50.131:8080; # }
2、修改default.conf文件
location / { proxy_pass http://myserver; }
HTTPS配置
server{
listen 8080 ssl;
server_name test.jxjfdks.com;
# 改成你的证书的名字
ssl_certificate /etc/nginx/cert/test.jxjfdks.com.pem;
# 你的证书的名字
ssl_certificate_key /etc/nginx/cert/test.jxjfdks.com.key;
ssl_session_timeout 5m;
ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_prefer_server_ciphers on;
location /{
proxy_pass http://192.31.15.14:8080;
}
}
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
· 什么是nginx的强缓存和协商缓存
· 一文读懂知识蒸馏
· Manus爆火,是硬核还是营销?