WP系列7: WP和Cloudflare合并的配置思路
两种方式, 今天咨询大佬朋友, flexible 的方式好像使用更多, 更简洁. wordpress 建站可以关注我的 WP系列.
CF 灵活配置 + NGINX 仅处理 HTTP
需要安装 cloudflare 插件
nginx 的配置 仅需要 布置 server 和 listen 80 即可, 其他都是大同小异
其中 用户到 CF 经过 CF的 SSL加密, 然而 服务器不需要布置到 CF的 SSL加密
User –ssl– CF –x– Server
可以参考一下 flexible 配置 即可
CF 严格配置 + Nginx 自行跳转 HTTP 和处理 HTTPS
服务器和 CF之间需要布置 SSL加密 User –ssl– CF –ssl– Server
传统服务器处理 HTTP 和 HTTPS, 应该是 CF进行严格执行.
其中保持 HTTP 301 跳转到 HTTPS, 进行执行. 就比较负责. 可能需要服务器上面也安装 certbot 或者 acme.sh 的SSL证书.
另外注意
修改完 NGINX配置以后, 老站点 可能要更新数据库 把 https 的所有条目, 改成 http, 参考命令. 或者反向行之.
wp search-replace 'http://diaomao.cc' 'https://diaomao.cc' --dry-run
Read more: WP系列7: WP和Cloudflare合并的配置思路
以下是一个站点的 采用 CF的 flexible 配置:
server {
listen 80;
server_name www.diaomao.cc diaomao.cc;
root /var/www/diaomao.cc/;
index index.php index.html index.htm index.nginx-debian.html;
location / {
try_files $uri $uri/ /index.php;
}
location ~ ^/wp-json/ {
rewrite ^/wp-json/(.*?)$ /?rest_route=/$1 last;
}
location ~* /wp-sitemap.*\.xml {
try_files $uri $uri/ /index.php$is_args$args;
}
error_page 404 /404.html;
error_page 500 502 503 504 /50x.html;
client_max_body_size 20M;
location = /50x.html {
# root /usr/share/nginx/html;
root /var/www/diaomao.cc
}
location ~ \.php$ {
fastcgi_pass unix:/run/php/php7.4-fpm.sock;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
include snippets/fastcgi-php.conf;
fastcgi_buffers 1024 4k;
fastcgi_buffer_size 128k;
# Add headers to serve security related headers
add_header X-Content-Type-Options nosniff;
add_header X-XSS-Protection "0";
add_header X-Permitted-Cross-Domain-Policies none;
add_header X-Frame-Options "SAMEORIGIN";
add_header Permissions-Policy "geolocation=(), camera=('self'), microphone=()";
add_header Referrer-Policy "strict-origin-when-cross-origin" always;
# add_header Content-Security-Policy "default-src 'self' https: data: 'unsafe-inline' 'unsafe-eval';" always;
}
# A long browser cache lifetime can speed up repeat visits to your page
location ~* \.(jpg|jpeg|gif|png|webp|svg|woff|woff2|ttf|css|js|ico|xml)$ {
access_log off;
log_not_found off;
expires 360d;
}
# disable access to hidden files
location ~ /\.ht {
access_log off;
log_not_found off;
deny all;
}
}