nginx配置文件中location的写法

本文详细介绍了Nginx的基本配置方法,包括Location语法及其匹配规则、ReWrite与Redirect语法的应用等,并提供了多个实用配置示例。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Nginx Location 语法,与简单配置
一、介绍Nginx是俄罗斯人编写的十分轻量级的HTTP服务器,Nginx,它的发音为“engine X”, 是一个高性能的HTTP和反向代理服务器,同时也是一个IMAP/POP3/SMTP 代理服务器.
二、Location语法语法:location [=|~|~*|^~] /uri/ { … }
注:
1、~ 为区分大小写匹配
2、~* 为不区分大小写匹配
3、!~和!~*分别为区分大小写不匹配及不区分大小写不匹配
示例一:
location / { }
匹配任何查询,因为所有请求都以 / 开头。但是正则表达式规则将被优先和查询匹配。
示例二:
location =/ {}
仅仅匹配/
示例三:
location ~* \.(gif|jpg|jpeg)$ {
rewrite \.(gif|jpg)$ /logo.png;

注:不区分大小写匹配任何以gif,jpg,jpeg结尾的文件
三、ReWrite语法
last - 基本上都用这个Flag。
break - 中止Rewirte,不在继续匹配
redirect - 返回临时重定向的HTTP状态302
permanent - 返回永久重定向的HTTP状态301
1、下面是可以用来判断的表达式:
-f和!-f用来判断是否存在文件
-d和!-d用来判断是否存在目录
-e和!-e用来判断是否存在文件或目录
-x和!-x用来判断文件是否可执行
2、下面是可以用作判断的全局变量
例:http://localhost:88/test1/test2/test.php
$host:localhost
$server_port:88
$request_uri:http://localhost:88/test1/test2/test.php
$document_uri:/test1/test2/test.php
$document_root:D:\nginx/html
$request_filename:D:\nginx/html/test1/test2/test.php
四、Redirect语法
server {
listen 80;
server_name start.igrow.cn;
index index.html index.php;
root html;
if ($http_host !~ "^star\.igrow\.cn$&quot {
rewrite ^(.*) http://star.igrow.cn$1 redirect;
}
}
五、防盗链location ~* \.(gif|jpg|swf)$ {
valid_referers none blocked start.igrow.cn sta.igrow.cn;
if ($invalid_referer) {
rewrite ^/ http://$host/logo.png;
}
}
六、根据文件类型设置过期时间
location ~* \.(js|css|jpg|jpeg|gif|png|swf)$ {
if (-f $request_filename) {
expires 1h;
break;
}
}
七、禁止访问某个目录
location ~* \.(txt|doc)${
root /data/www/wwwroot/linuxtone/test;
deny all;
}

转:http://www.phpchina.com/html/70/t-162870.html,http://idev.yo2.cn/go/19761.html
### 关于 Nginx 配置中的 `http://backend` 含义 在 Nginx 中,`http://backend` 并不是一个标准的配置项名称,而是可能出现在特定上下文中的一种表示方式。通常它会用于反向代理或者上游服务定义中。 #### 反向代理场景下的解释 如果在配置文件中有如下类似的设置: ```nginx location /api/ { proxy_pass http://backend; } ``` 这里的 `http://backend` 实际上是一个指向后端服务的地址[^2]。具体来说: - **`http://` 协议前缀** 表明这是 HTTP 或 HTTPS 请求的目标协议。 - **`backend` 名称** 是一个逻辑上的主机名或变量,它可以被解析为实际的 IP 地址或域名。这种解析通常是通过 upstream 块完成的。例如: ```nginx upstream backend { server 192.168.1.1:8080; server 192.168.1.2:8080; } server { listen 80; location /api/ { proxy_pass http://backend; } } ``` 在这个例子中,`http://backend` 被映射到由 `upstream` 定义的一组后端服务器列表。Nginx 将根据负载均衡策略(默认轮询)将请求转发给这些后端服务器之一。 #### Vue 打包后的非根目录部署案例分析 对于 Vue 应用程序打包后部署至 Nginx 的情况,可能会涉及类似以下的配置[^4]: ```nginx location ^~ /backend { alias D:\phpstudy_pro\WWW; try_files $uri $uri/ @rewrites; } location @rewrites { rewrite ^/(backend)/(.+)$ /$1/index.html last; } ``` 在这种情况下,`http://backend` 不会出现显式的写法,但可以通过隐含的方式理解为前端应用所在的路径 `/backend` 对应的实际资源位置。即访问 `http://example.com/backend/some-route` 时,Nginx 会尝试匹配静态文件并最终回退到 `index.html` 文件以支持单页应用程序的历史模式路由。 #### 总结 综上所述,在 Nginx 配置中提到的 `http://backend` 更多时候是指代一种抽象的服务目标地址或者是基于 upstream 模块定义好的一组后端服务器集合。它的作用取决于具体的上下文环境以及完整的配置内容。 ```nginx # 示例:Upstream 和 Proxy Pass 组合使用 upstream backend_servers { server 127.0.0.1:3000 weight=5 max_fails=3 fail_timeout=30s; server 127.0.0.1:3001 backup; } server { listen 80; server_name example.com; location /api/ { proxy_pass http://backend_servers; } } ``` 上述代码片段展示了如何利用 `proxy_pass` 进行动态流量分发,并且明确了 `http://backend_servers` 的意义所在。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值