这次更换Nginx服务器,耗时最多的就是rewrite伪静态规则的配置了,第一次接触Nginx,还不是特别熟悉,下面将这几天服务器迁移过程中搜索+摸索出来的几点常用伪静态规则展示一下,以作参考。
一、Nginx服务器中的SSL伪静态配置
一般来说,申请SSL服务成功之后,可以下载得到*.pem和*.key两个文件。将这两个文件上传到服务器中,并修改以下内容,添加至nginx.conf文件中的server{}大括号里面。
#HTTP_TO_HTTPS_START
if ($server_port !~ 443){
rewrite ^(/.*)$ https://$host$1 permanent;
}
#HTTP_TO_HTTPS_END
#下面两行修改为你的pem和key所放置的路径
ssl_certificate /www/server/***/cert/***/***.pem;
ssl_certificate_key /www/server/***/cert/***/***.key;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4;
ssl_prefer_server_ciphers on;
ssl_session_cache shared:SSL:10m;
ssl_session_timeout 10m;
error_page 497 https://$host$request_uri;
#SSL-END
二、Nginx服务器中的防盗链伪静态设置
防盗链可以设置开启防盗链的URL后缀类型,也可以设置白名单的网址(可以用通配符*设置某个域),当触发防盗链时,将直接返回404状态。
#SECURITY-START 防盗链配置
location ~ .*\.(jpg|jpeg|gif|png|js|css)$
{
expires 30d;
access_log /dev/null;
#将下面一行的网址修改为自定义的白名单网址,支持通配符
valid_referers none blocked imsail.com *.imsail.com;
if ($invalid_referer){
return 404;
}
}
三、Nginx服务器中的Wordpress伪静态配置
wordpress官方给出的nginx环境伪静态配置规则如下,打开 nginx.conf 或者某个站点的配置环境在 server { } 大括号里面添加下面的代码(用于网站根目录):
location / {
try_files $uri $uri/ /index.php?$args;
}
对于安装在子目录/子文件夹下(非二级域名)的wp,配置代码如下
#将sub替换为你的wp所在子目录文件夹
location /sub/{
try_files $uri $uri/ /sub/index.php?$args;
}
安装在子目录后,如果想通过二级域名直接访问wordpress,二级域名的配置代码如下(以下内容添加到二级域名的nginx.conf中)。
rewrite ^.*/files/(.*)$ /wp-includes/ms-files.php?file=$1 last;
if (!-e $request_filename){
rewrite ^.+?(/wp-.*) $1 last;
rewrite ^.+?(/.*\.php)$ $1 last;
rewrite ^ /index.php last;
}
四、Nginx服务器中的Chevereto图床伪静态配置
chevereto官网给出的Nginx服务器rewrite规则如下,打开 nginx.conf 或者某个站点的配置环境在 server { } 大括号里面添加下面的代码(用于网站根目录及二级域名):
#Chevereto: Disable access to sensitive files
location ~* /(app|content|lib)/.*\.(po|php|lock|sql)$ {
deny all;
}
#Chevereto: CORS headers
location ~* /.*\.(ttf|ttc|otf|eot|woff|woff2|font.css|css|js) {
add_header Access-Control-Allow-Origin "*";
}
#Chevereto: Upload path for image content only and set 404 replacement
location ^~ /images/ {
location ~* (jpe?g|png|gif) {
log_not_found off;
error_page 404 /content/images/system/default/404.gif;
}
return 403;
}
#Chevereto: Pretty URLs
location / {
index index.php;
try_files $uri $uri/ /index.php?$query_string;
}
引用官方说法,In case you installed Chevereto in a sub folder, the rules should look like this. 如果您将Chevereto安装在子目录/子文件夹中,nginx rewrite伪静态规则应如下所示:
#将sub替换为你的图床程序所在子目录文件夹
#Chevereto: Disable access to sensitive files
location ~* /sub/(app|content|lib)/.*\.(po|php|lock|sql)$ {
deny all;
}
#Chevereto: CORS headers
location ~* /sub/.*\.(ttf|ttc|otf|eot|woff|woff2|font.css|css|js) {
add_header Access-Control-Allow-Origin "*";
}
#Chevereto: Upload path for image content only and set 404 replacement
location ^~ /sub/images/ {
location ~* (jpe?g|png|gif) {
log_not_found off;
error_page 404 /sub/content/images/system/default/404.gif;
}
return 403;
}
#Chevereto: Pretty URLs
location /sub/ {
index index.php;
try_files $uri $uri/ /sub/index.php?$query_string;
}
五、Nginx服务器下,访问子目录自动跳转至绑定的二级域名的伪静态配置
这里以本站blog子文件夹对应的t.imsail.com域名为例,请对照修改。打开 nginx.conf 或者某个站点的配置环境在 server { } 大括号里面添加下面的代码。
location ~* ^/blog {
rewrite ^/blog(.*)$ http://t.imsail.com/$1 permanent;
}
就是这些啦,因为是刚刚摸索,所以可能会有错误的地方,欢迎大神指出~~也希望大家多多留言交流哦~~~