官方文档:http://nginx.org/en/docs/
常用模块:
内置参数查询:
系统的基础使用教程就不再记录了,只是记录一些用到的配置方法
主域跳转www域
官方推荐分两个server,不推荐用匹配host然后转发的方式
server {
listen 80;
#此处填写主域
server_name qbsmovie.com;
return 301 http://www.$host$request_uri;
}
server {
listen 80;
#此处填写WWW域
server_name www.qbsmovie.com;
//网站主配置
.....
}
多个条件的if判断
nginx没有and条件和else,注意语法比较严格,该有空格的地方必须要有空格
#特定页面的主页301跳转
set $flag_jianzhan_root 0;
if ( $host = 'jianzhan.fxt.cn' ){
set $flag_jianzhan_root "${flag_jianzhan_root}1";
}
if ( $request_uri = '/' ){
set $flag_jianzhan_root "${flag_jianzhan_root}2";
}
if ( $flag_jianzhan_root = '012' ){
return 301 http://www.fxt.cn;
}
带参数请求转发
被转发的服务器需要接收转发前的参数
location /sitemap.xml {
rewrite /sitemap.xml /api/sitemap/pc?host=$host break;
proxy_pass http://www.newjianzhan.com;
}
location /sitemap.xml {
proxy_pass [http://www.newjianzhan.com;](http://www.newjianzhan.com%3B/)
#通过设置header来传递是更好的解决办法
proxy_set_header Host $host;
}
**路由伪静态rewrite**
rewrite "/mobile/p([0-9]{1,})/news_([0-9]{1,}).html1&NewsID=$2;
**指定404页面**
error_page 404 /404.html;
···
gzip配置
https://nginx.org/en/docs/http/ngx_http_gzip_module.html
http://www.cnblogs.com/mitang/p/4477220.html
百度seo要求:修改vary的header值
#gzip_vary on; 这一行注释掉或者改成off获取不写,换成下面那行。这个配置项添加的vary头不符合要求。
#add_header Vary "Accept-Encoding, User-Agent"; 这个header用于百度移动端抓取,配合meta标签applicable-device使用
参考文章:https://ziyuan.baidu.com/college/articleinfo?id=717
配置默认服务器
默认按照server的加载顺序,第一个加载的为默认
手动指定的方法:
listen 80 default_server;
和server_name ;这个写法没有关系,'' 只是作为一个和业务域名无关的请求回收服务而已(通俗理解就是不限制传入的域名或IP),如果我们线上的业务都是明确的业务域名访问,那泛解析造成的一些非业务域名或ip访问都会被这个 sever 回收处理。
判断文件是否存在
if ( -e /www/test.php ) {
...
}
正则替换
#host为www.test.com,$prefix可以赋值为test_com_
if ( $host ~ ^www\.(/w)\.(/w)$ ) {
$perfix = $1_$2_;
}
php fast_cgi传参
location ~ \ .php$ {
...
fast_cgi_params DB_PREFIX $prefix;
...
}
此处的DB_PREFIX参数可以作为系统的env变量使用。