在nginx 中配置自己的请求参数!

Nginx配置详解
本文详细介绍了如何使用Nginx进行域名解析配置,包括HTTP请求的分发、PHP请求的处理及静态资源缓存策略等内容。
因为sass项目要部署一套代码,因此我们前段的项目要根据不同的参数来进行适配
http是无协议的每一个域都有一套自己的域的规则
因此,就需要nginx作为网关来进行分发

其实具体在nginx的请求下进行如下配置就行
最重要的就是这一句话
 set $args "foo=1&bar=2";




location ~ .php($|/)
{
set $args "foo=1&bar=2";
more_set_input_headers 'finfo:1111aaaa';
set $script $uri;
set $path_info "";
if ($uri ~ "^(.+.php)(/.+)") {
set $script $1;
set $path_info $2;
}
fastcgi_param SCRIPT_FILENAME $document_root$script;
fastcgi_param SCRIPT_NAME $script;
fastcgi_param PATH_INFO $path_info;
try_files $uri =404;
fastcgi_pass unix:/tmp/php-cgi.sock;
fastcgi_index index.php;
include fastcgi.conf;
}





整个 nginx 的域名解析配置文件如下


server
{
add_header info 123456;
add_header abc 123;
listen 8099;
server_name bookpacking.snsall.cn;
index index.html index.htm index.php default.html default.htm default.php;
root /mars/domain/book/;
location / {
if (!-e $request_filename) {
rewrite ^(.*)$ /index.php?space=1234&s=$1 last;
break;
}
}
location ~ .php($|/)
{
set $args "foo=1&bar=2";
more_set_input_headers 'finfo:1111aaaa';
set $script $uri;
set $path_info "";
if ($uri ~ "^(.+.php)(/.+)") {
set $script $1;
set $path_info $2;
}
fastcgi_param SCRIPT_FILENAME $document_root$script;
fastcgi_param SCRIPT_NAME $script;
fastcgi_param PATH_INFO $path_info;
try_files $uri =404;
fastcgi_pass unix:/tmp/php-cgi.sock;
fastcgi_index index.php;
include fastcgi.conf;
}
location ~ .*\.(gif|jpg|jpeg|png|bmp|swf)$
{
expires 30d;
}
location ~ .*\.(js|css)?$
{
expires 12h;
}
access_log /alidata/log/nginx/access/domain.log;
error_page 404 /404.php;
}
Nginx 中,可以通过配置 `proxy_cache` 和 `proxy_no_cache` 指令实现对特定请求不进行缓存。这种方式允许灵活控制缓存行为,例如根据请求的 URI、文件类型或其他条件来决定是否缓存响应内容。 ### 配置方法 为了实现不缓存特定请求的功能,可以在 `server` 或 `location` 块中使用 `if` 判断语句设置一个变量(如 `$cookie_name`),并在 `location` 块中引用该变量来决定是否禁用缓存。以下是一个具体的配置示例,用于对 `.txt` 和 `.text` 文件不进行缓存: ```nginx http { include mime.types; default_type application/octet-stream; proxy_cache_path /usr/local/nginx/cache_temp levels=2:2 keys_zone=cache_zone:30m max_size=32m inactive=60m use_temp_path=off; upstream cache_server { server 192.168.12.128:1010; server 192.168.12.128:1011; } server { listen 80; server_name localhost; # 判断请求是否为 txt 或 text 文件 if ($request_uri ~ \.(txt|text)$ ) { set $cookie_name "no cache"; } location / { proxy_cache cache_zone; proxy_no_cache $cookie_name; # 如果存在 cookie_name 变量则不缓存 proxy_cache_valid 200 5m; # 对 200 状态码的响应缓存 5 分钟 add_header Nginx-Cache-Status "$upstream_cache_status"; proxy_pass http://cache_server; } } } ``` 在上述配置中,`proxy_cache_path` 定义了缓存存储的路径和相关参数,`proxy_cache` 启用了缓存功能,`proxy_no_cache` 则根据 `$cookie_name` 的值决定是否跳过缓存。如果请求的 URI 匹配 `.txt` 或 `.text` 文件扩展名,则设置 `$cookie_name` 变量为 `"no cache"`,从而阻止该请求被缓存。 ### 缓存失效与上游压力优化 当缓存失效时,可能会导致大量请求直接穿透到上游服务器,增加服务器负载。为了解决这一问题,可以通过配置合并源请求来降低上游服务器压力。具体来说,当多个客户端同时请求相同资源时,Nginx 会只向后端发送一条请求,获取数据后缓存,并让其他请求从缓存中获取数据,从而减少上游服务器的负担。 此外,还可以通过启用陈旧缓存来进一步优化缓存失效场景下的性能表现。启用陈旧缓存的配置可以确保即使缓存已过期,Nginx 仍可以使用旧的缓存内容,同时异步更新缓存内容,避免客户端等待。 ### 相关配置参数说明 - **`proxy_cache`**:指定使用的缓存区域,该区域在 `proxy_cache_path` 中定义。 - **`proxy_no_cache`**:控制是否跳过缓存,通常结合变量使用。 - **`proxy_cache_valid`**:定义缓存的有效时间,仅对特定状态码有效。 - **`add_header`**:添加自定义响应头,用于调试或监控缓存状态。 通过合理配置这些指令,可以有效控制 Nginx 的缓存行为,实现更高效的资源管理和服务性能优化。 ---
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值