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;
  }
  
}