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

365娱乐场奖金 2025-09-23 07:26:08 作者: admin 阅读: 8816
nginx伪静态配置解释和Nginx 常见的配置

文章目录

禁止访问 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 $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:8080、192.168.1.2:8080、192.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 请求重定向到 HTTPS

return 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-url

rewrite ^/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

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

相关推荐