nginx伪静态配置解释和Nginx 常见的配置

news/2025/2/7 6:44:29/
文章目录
  • 禁止访问 runtime 和 application 目录
  • rewrite 对 URL 进行重写或重定向
  • 301重定向
  • root 静态资源路径处理
  • alias 路径映射
  • try_files 伪静态规则
  • Nginx 配置有许多其他常见的场景和使用方式
      • 1. **基本的反向代理配置**
      • 2. **负载均衡配置**
      • 3. **限制访问(IP 限制)**
      • 4. **限制请求速率(防止 DDoS)**
      • 5. **配置 HTTPS(SSL)**
      • 6. **缓存静态资源**
      • 7. **Gzip 压缩**
      • 8. **自定义错误页面**
      • 9. **重写 URL(URL 重定向)**
      • 10. **防盗链(Hotlink Protection)**
  • 完结

禁止访问 runtime 和 application 目录

location ~* (runtime|application)/{return 403;
}

这部分的作用是拦截对 runtime 和 application 目录的访问,并返回 403 Forbidden(禁止访问)状态码。

location ~* (runtime|application)/:这是一个正则匹配规则,~* 表示不区分大小写地匹配路径。(runtime|application) 是一个正则表达式,匹配 runtime 或 application 这两个字符串后跟 / 的路径。所以,任何以 runtime/ 或 application/ 开头的请求都会被匹配到。

return 403;:当请求匹配到这个 location 时,Nginx 会返回 HTTP 状态码 403,意味着请求被禁止访问。

总结:此配置的目的是阻止访问 runtime 和 application 目录,通常这些目录是应用的内部目录,不应该被外部用户访问。

rewrite 对 URL 进行重写或重定向

location / {if (!-e $request_filename){rewrite  ^(.*)$  /index.php?s=$1  last;   break;}
}

这部分是伪静态 URL 的重写规则,通常用于将原本的动态 URL 重写成伪静态形式。

location /:表示所有根目录下的请求都进入这个 location 块中。

if (!-e $request_filename):这个条件判断用来检查请求的文件是否存在。如果请求的文件在服务器上不存在($request_filename 是请求的文件路径),则进入 rewrite 规则。!-e 表示文件不存在。

rewrite ^(.*)$ /index.php?s=$1 last;:如果请求的文件不存在,就进行 URL 重写。这里使用正则表达式 ^(.*)$ 来匹配整个请求路径,并将其作为参数传递给 index.php 文件。重写后的 URL 变成了 /index.php?s=<请求路径>,其中 <请求路径> 是原始请求路径。last 表示停止当前配置并重新进行匹配。

break;:break 用来终止 if 语句中的执行,防止出现不必要的重定向或进一步的规则匹配。

总结:此配置实现了伪静态功能。如果用户请求的 URL 对应的文件在服务器上不存在(比如用户访问 /about,而服务器上没有 /about 这个文件),则会把请求转发到 index.php 文件,并将原始请求路径作为查询参数传递给 index.php。这样,URL 变成了伪静态的形式,实际处理却依赖于 PHP 脚本。

location /test {rewrite ^/test$ /test2/a permanent;
}
  • ^/test$ 匹配精确的 URL /test。
  • /test2/a 是目标 URL。
  • permanent 表示使用 HTTP 301 永久重定向。
  • 访问 http://example.com/test 时,将会被重定向到 http://example.com/test2/a。

如果你希望包括所有 /test 路径下的内容,也可以修改为:

location /test {rewrite ^/test(.*)$ http://baidu.com permanent;
}

这样,/test 后的路径部分(如 /test/abc)会被附加到重定向的 URL 上。

301重定向

当访问根路径 / 时,重定向到 /admin

location = / {return 301 /admin;
}

root 静态资源路径处理

location /static/ {root /www/wwwroot/totalplatform/public;
}
  • 这条规则表示:当访问 /static/ 路径时,Nginx 会查找位于 /www/wwwroot/totalplatform/public 目录中的文件。
  • 例如,访问 /static/css/style.css 时,Nginx 会去寻找 /www/wwwroot/totalplatform/public/static/css/style.css 文件。

alias 路径映射

alias 不会像 root 那样拼接路径,它会将 URL 路径直接映射到指定目录

location /play {alias /www/wwwroot/totalplatform/public/static;
}
  • 这样,/play/bgz/style/Temp61-wap.css 会直接映射到 /www/wwwroot/totalplatform/public/static/bgz/style/Temp61-wap.css,正确地找到文件。

try_files 伪静态规则

try_files 会首先尝试匹配请求的 URI,若找不到对应文件或目录,则会根据配置重定向到一个默认页面。

location /admin/ {try_files $uri $uri/ /admin/index.html;
}
  • 这条规则的作用是:当访问 /admin/ 路径时,Nginx 会首先尝试查找请求的 URI 是否对应到本地的文件 $uri 或目录 $uri/(如 /admin 或 /admin/)。

  • 如果没有找到对应的文件或目录,Nginx 会默认将请求重定向到 /admin/index.html 页面。

    location /admin-api/ {
    try_files $uri u r i / / i n d e x . p h p ? uri/ /index.php? uri//index.php?query_string;
    }

  • 如果 /admin-api/ 路径没有找到对应的静态文件,则会重定向到 /index.php,并携带查询参数 $query_string,这通常是用来处理动态请求的入口文件。

如果文件不存在则返回 406 错误

location /dp {root/www/wwwroot/guild/public/dp;try_files $uri =406;# 如果文件不存在则返回 406 错误
}

Nginx 配置有许多其他常见的场景和使用方式

1. 基本的反向代理配置

反向代理配置允许 Nginx 接收客户端的请求,并将这些请求转发给后端的应用服务器(如 Node.js、PHP-FPM、Django 等)。

server {listen 80;server_name example.com;location / {proxy_pass http://127.0.0.1:3000;  # 将请求转发到本地的 3000 端口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_set_header X-Forwarded-Proto $scheme;}
}
  • 解释:这条规则将所有请求(/)转发到本地的 3000 端口上。proxy_set_header 设置了一些 HTTP 头,传递客户端的真实 IP 地址等信息给后端。
2. 负载均衡配置

Nginx 可以作为负载均衡器,将请求分发到多个后端服务器。

http {upstream backend {server 192.168.1.1:8080;server 192.168.1.2:8080;server 192.168.1.3:8080;}server {listen 80;server_name example.com;location / {proxy_pass http://backend;  # 代理请求到 upstream 后端池}}
}
  • 解释upstream 定义了一个后端服务器池,Nginx 会将请求按照轮询的方式分发给 192.168.1.1:8080192.168.1.2:8080192.168.1.3:8080 等服务器。
3. 限制访问(IP 限制)

可以配置 Nginx 限制特定 IP 的访问,或者允许/禁止访问特定的资源。

server {listen 80;server_name example.com;location /admin/ {allow 192.168.1.100;    # 允许 192.168.1.100 访问deny all;               # 其它 IP 都禁止访问}
}
  • 解释:此配置表示只有 192.168.1.100 IP 地址可以访问 /admin/ 路径,其他的 IP 地址都会被拒绝。
4. 限制请求速率(防止 DDoS)

通过设置请求速率限制,防止恶意请求造成服务器过载。

http {limit_req_zone $binary_remote_addr zone=mylimit:10m rate=1r/s;  # 每个 IP 限制 1 秒 1 次请求server {listen 80;server_name example.com;location / {limit_req zone=mylimit burst=5;  # 允许每个 IP 突发 5 次请求}}
}
  • 解释:此配置会限制每个 IP 地址每秒发起的请求数。如果请求速率超过限制,Nginx 会返回 503 错误。
5. 配置 HTTPS(SSL)

Nginx 可用于为站点启用 HTTPS。

server {listen 80;server_name example.com;# 强制 HTTP 请求重定向到 HTTPSreturn 301 https://$host$request_uri;
}server {listen 443 ssl;server_name example.com;ssl_certificate /etc/nginx/ssl/example.com.crt;ssl_certificate_key /etc/nginx/ssl/example.com.key;location / {root /var/www/html;index index.html;}
}
  • 解释:首先通过 HTTP 端口 80 将所有请求重定向到 HTTPS(端口 443)。第二个 server 块监听 HTTPS 请求,并指定证书和私钥的位置。
6. 缓存静态资源

通过配置 Nginx 的缓存策略,提升静态资源的加载速度。

server {listen 80;server_name example.com;location /static/ {root /var/www/html;expires 30d;  # 缓存 30 天add_header Cache-Control "public";}
}
  • 解释:此配置设置了对 /static/ 路径下的资源进行缓存,缓存时长为 30 天。Cache-Control 头用于告知浏览器或 CDN,缓存这些资源。
7. Gzip 压缩

启用 Gzip 压缩可以有效地减少传输的数据量,提升网站加载速度。

http {gzip on;gzip_min_length 1000;gzip_types text/plain application/xml text/css application/javascript;gzip_proxied any;gzip_vary on;
}
  • 解释:启用 Gzip 压缩,针对 .txt.xml.css.js 等类型的文件进行压缩。gzip_vary on 使得 Nginx 在返回压缩内容时可以根据客户端是否支持压缩返回不同的版本。
8. 自定义错误页面

通过配置错误页面,可以为用户提供更友好的错误提示页面。

server {listen 80;server_name example.com;location / {try_files $uri $uri/ =404;  # 如果文件找不到,返回 404 错误}error_page 404 /404.html;  # 自定义 404 错误页面error_page 500 502 503 504 /50x.html;  # 自定义 50x 错误页面location = /404.html {root /var/www/html;}location = /50x.html {root /var/www/html;}
}
  • 解释:当用户访问的页面不存在时,会显示自定义的 404.html 页面。对于 500、502、503、504 等服务器错误,显示 50x.html 页面。
9. 重写 URL(URL 重定向)

通过 rewrite 指令,可以对 URL 进行重写或重定向。

server {listen 80;server_name example.com;# 将 /old-url 路径重定向到 /new-urlrewrite ^/old-url$ /new-url permanent;
}
  • 解释:当访问 /old-url 时,Nginx 会永久地将请求重定向到 /new-url
10. 防盗链(Hotlink Protection)

防止其他网站直接链接你网站的图片、视频等资源。

server {listen 80;server_name example.com;location /images/ {valid_referers none blocked example.com *.example.com;if ($invalid_referer) {return 403;}}
}
  • 解释:如果请求图片的页面来源不是 example.com 或其子域名,Nginx 会返回 403 错误,防止盗链。

完结

赠人玫瑰,手有余香!如果文章内容对你有所帮助,请不要吝啬你的点赞评论和关注,你的每一次支持都是我不断创作的最大动力。当然如果你发现了文章中存在错误或者有更好的解决方法,也欢迎评论私信告诉我哦!

好了,我是向宇,https://xiangyu.blog.csdn.net

一位在小公司默默奋斗的开发者,闲暇之余,边学习边记录分享,站在巨人的肩膀上,通过学习前辈们的经验总是会给我很多帮助和启发!如果你遇到任何问题,也欢迎你评论私信或者加群找我, 虽然有些问题我也不一定会,但是我会查阅各方资料,争取给出最好的建议,希望可以帮助更多想学编程的人,共勉~
在这里插入图片描述


http://www.ppmy.cn/news/1570006.html

相关文章

机器学习9-卷积和卷积核2

机器学习9-卷积和卷积核2 卷积与边缘提取边缘的种类边缘检测图像求导解析示例 图像求导公式&#xff1a;解析总结 图像梯度噪声的影响 边缘检测目标非极大值抑制总结 卷积与边缘提取 边缘&#xff1a;图像中亮度明显而急剧变化的点 为什么要研究边缘&#xff1f; 编码图像中…

计算机组成原理——存储系统(四)

当晨曦的第一缕光线划破夜空&#xff0c;那是宇宙给奋斗者的信号——光明属于那些在黑暗中依旧寻找希望的人。在这条通往梦想的道路上&#xff0c;每一步都充满挑战&#xff0c;但正是这些挑战定义了你的坚韧与不屈。不要满足于现状&#xff0c;因为你的潜力远超想象&#xff1…

十二、Docker Compose 部署 SpringCloudAlibaba 微服务

一、部署基础服务 0、项目部署结构 项目目录结构如下: /home/zhzl_hebei/ ├── docker-compose.yml └── geochance-auth/└── Dockerfile└── geochance-auth.jar └── geochance-system/└── Dockerfile└── geochance-system.jar └── geochance-gateway/…

C++Primer 赋值运算符

欢迎阅读我的 【CPrimer】专栏 专栏简介&#xff1a;本专栏主要面向C初学者&#xff0c;解释C的一些基本概念和基础语言特性&#xff0c;涉及C标准库的用法&#xff0c;面向对象特性&#xff0c;泛型特性高级用法。通过使用标准库中定义的抽象设施&#xff0c;使你更加适应高级…

自动驾驶---两轮自行车的自主导航

1 背景 无人驾驶汽车最早出现在DARPA的比赛中&#xff0c;从那个时刻开始&#xff0c;逐渐引起全球学者的注意&#xff0c;于是从上个世纪开始各大高校院所开始了无人汽车的研发。直到这两年&#xff0c;无人驾驶汽车才开始走进寻常百姓家&#xff0c;虽然目前市面上的乘用车还…

C语言数据结构编程练习-排序算法

1、冒泡排序 思路&#xff1a;比较相邻的两个数&#xff0c;左边大于右边交换一趟排下来最大的在右边时间复杂度&#xff1a;O(n2) //冒泡排序 从小到大的顺序排列 //思路&#xff1a;比较相邻的两个数&#xff0c;左边大于右边交换一趟排下来最大的在右边 void bubbleSort(i…

LabVIEW图片识别逆向建模系统

本文介绍了一个基于LabVIEW的图片识别逆向建模系统的开发过程。系统利用LabVIEW的强大视觉处理功能&#xff0c;通过二维图片快速生成对应的三维模型&#xff0c;不仅降低了逆向建模的技术门槛&#xff0c;还大幅提升了建模效率。 ​ 项目背景 在传统的逆向建模过程中&#xf…

BOOST开关调整器拓扑

电路原理 在V和开关管Q1之间串接电感L1。当Q1导通时,电流从电感L1的下端流入 Q1。当 Q1关断时,电流从电感L1的下端通过整流二极管D1输送给输出电容C。及负载。 假设输出电压和电流已建立,电路已稳定运行,当Q1导通时(Tm),二极管反偏截止,L1的电流线性上升达到峰值l。 V T„/L1…