nginx config文件配置

$remode_addr 获取访问者的ID
$request_method 判断提交方式 GET POST
$http_user_agent 获取浏览器软件


if (条件) {} #if之后要有空格

条件3种写法:
1: '=' 来判断相等,用于字符串比较
2: '~' 用正则来匹配(此处的正则区分大小写)
~* 不区分大小写的正则
3: -f -d -e 来判断是否为文件,目录,是否存在


rewrite ^.*$ /web/index.php;
break; #跳出rewrite

rewrite #重写

重写中用到的指令
if (条件) {} 设定条件,在进行重写
set #设置变量,用来达到多条件判断时做标记,达到Apache下的rewrite_condition效果
return #返回状态码
break #跳出rewrite
rewrite #重写 rewrite ^.*$ /www/web/dfh/index.php;
服务器内部的rewrite和302跳转不一样,跳转的话是url都变了,变成重新http请求404.html,而内部rewrite,上下文没有变

 

反向引用:
rewrite goods-([\d]+)\.html$ /goods.php?id=$1; #$1 等于正则括号里的内容

rewrite goods-(\d+)-b(\d+)-min(\d+)-attr([\d\.]+)-(\d+)\.html /ecshop/category.php?id=$1&brand=$2&price_min=$3&price_max=$4&filter_attr=$5;

注意:用url重写时,正则里如果有"{}",正则要用爽引号包起来

 


解析.php文件

#location ~\.php/?.*$ {
#或者
location ~\.php{
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi.conf;
}

 

 


gzip #配置的常用参数

gzip on | off
gzip_buffers 32 4K | 16 8K #缓冲(压缩在内存中缓冲几块?每块多大?)
gzip_comp_level [1-9] #推荐6 压缩级别(级别越高,压得越小,越浪费CPU计算资源)
gzip_disable #正则匹配 UA 什么样的uri 不进行gzip
gzip_min_lenght 200 #开始压缩的最小长度(再小就不要压缩了,意义不在)
gzip_http_version 1.0 | 1.1 #要是压缩的http协议版本(可以不设置,目前几乎全是1.1协议)
gzip_proxied #设置请求者代理服务器,该如何缓存内容
gzip_types text /plain application/xml #对那些类型的文件用压缩, 如 txt xml html css
gzip_vary on | off #是否传输gzip压缩标志

 

expires #缓存

对于网站的图片,尤其是新闻站,图片一旦发布,改动的可能是非常小的,用户访问后就把图片缓存在用户浏览器端


在location 或 if段里
格式:
expires 30s;
expires 30m;
expires 2h;
expires 30d;

#lication ~* image {
lication ~* () {
root /www/web;
expires 1d;
}
(注意:服务器的日期要准确,如果服务器如期落后于实际日期,可能导致缓存失效!)
另:304 也是一种很好的缓存手段
原理是:服务器相应文件内容是,勇士相应etag标签(内容的签名,内容一变,他也变),和 last_modified_since 两个标签值,浏览器下次发去请求时,头信息发送这两个标签,服务器检测文件没有发生变法,如无,直接发送头信息返回 etag , last_modified_since 浏览器知道内容用无变化,于是直接调用本地缓存,这个过程也请求了服务器,但是传值的内容极少,对于变化周期比较短的,html,css,js等


反向代理服务器 + 负载均衡
用nginx做反向代理支持两个用法
1 proxy_pass
2 upstream
例:
location ~ \.php$ {
proxy_pass http://192.168.1.200:8080; #访问的文件.php文件是代理服务器端的
}

反向代理如果有多台服务器,自认可形成负载均衡
但proxy_pass如何指向多台服务器:
把多台服务器用 upstream 指定绑定在一起并起个组名;
逐个请求,也有其他负载均衡算法,如一致性哈希,需要安装第三方模块
(第三方算法地址 : ngx_http_upstream_consistent_hash)

例:
upstream testserver {
#第一个服务器
server 127.0.0.1:81 weight=1 max_fails=2 fail_timeout=3;
#第二个服务器
server 174.16.10.110:80 weight=1 max_fails=2 fail_timeout=3;
}

server{
listen 81;
server_name localhost;
root /www/web;
index index.php index.html;

location ~ \.php {
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
#加载Nginx默认"服务器环境变量"配置
include fastcgi.conf;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
}


}


location ~ \.php/?.*$ {
proxy_set_header X_Forwarded_For $remote_addr; #将客户端ip传给负载服务器
proxy_pass http://testserver;
}

转载于:https://www.cnblogs.com/jasonLiu2018/articles/10655748.html

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值