龙空技术网

Wordpress+Nginx代理部署实战

新钛云服 144

前言:

此时朋友们对“wordpress数据库nginx”大约比较着重,姐妹们都需要分析一些“wordpress数据库nginx”的相关文章。那么小编同时在网络上收集了一些对于“wordpress数据库nginx””的相关资讯,希望看官们能喜欢,朋友们一起来学习一下吧!

一、文档说明

本文档主要介绍wordpress+nginx架构调整。

Wordpress默认的前端架构是httpd,为了便于管理和拓展需求,现替换为nginx作为前端代理,并使其实现前后端分离。

二、建设背景

一般情况我们架设wordpress 的结构是这样的:

客户端直接访问Wordpress服务器,这种形式,前后端并未分离。服务器地址直接暴露在外,导致地址无法过滤,策略以及流量转发规则无法得以实现,并伴随着很多安全隐患。

通过本次建设实施,实现前后端分离,前端Nginx接收客户端请求,根据策略负载至后端Wordpress服务器。下图所示架构:

三、建设实施

配置前端服务器下载nginx

yum install -y nginx

配置nginx配置文件,为了便于管理。在默认的nginx配置文件中输入如下命令:# include conf.d/*.conf,即可新建一个.conf的文件。

vim tyun.cnserver {listen 80;return 301 ; #强制跳转https}server {listen 443 ssl;# 监听端口server_name {server_name};# 域名ssl_certificate /usr/local/nginx/cert/;# 证书路径ssl_certificate_key /usr/local/nginx/cert/;#key 路径#官网首页配置location / {root /data/website/tyun/;index index.html index.htm;}#反向代理配置location /blog/ {proxy_pass https://{后端服务器地址}/;}}
注:后端服务器地址后面一定要加上/,不然传递至后端会带上/blog。

配置后端服务器由于Wordpress有很多的PHP文件和请求,需要后端配置fastcgi转译服务,还需要配置重写地址策略,后端配置如下所示。

vim tyun.cnserver {listen 80;return 301 ;}server {listen 443 ssl;#伪静态后页面什么的确实可以访问了,结果却出现新的问题,后台不能访问了,仔细观察发现后台所有地址都缺少wp-admin目录,又在网上去寻找答案,就是简单地加一行斜杠重定向而已,方法如下:rewrite /wp-admin$ $scheme:// permanent;access_log /var/log/nginx/host.access.log main;ssl_certificate 3585460_blog.tyun.cn.pem;ssl_certificate_key 3585460_blog.tyun.cn.key;ssl_session_timeout 5m;ssl_protocols TLSv1 TLSv1.1 TLSv1.2;ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:HIGH:!aNULL:!MD5:!RC4:!DHE;ssl_prefer_server_ciphers on;#Wordpress配置#wordpress官方的伪静态是通过.htaccess实现的,但nginx并不支持.htaccess,网上找到wordpress伪静态的方法:location / {  root /data/nginx/html;  #wordpress所在目录  index index.html index.htm index.php;  if (-f $request_filename/index.html){  rewrite (.*) $1/index.html break;}  if (-f $request_filename/index.php){  rewrite (.*) $1/index.php;}  if (!-f $request_filename){  rewrite (.*) /index.php;}  try_files $uri $uri/ /index.php?$args;}#fastcgi配置location ~ \.php$ {  root /data/nginx/html;  fastcgi_pass 127.0.0.1:9000;  fastcgi_index index.php;  include fastcgi_params;  fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;}location ~ "wp-content" {  root /data/nginx/html;  index index.php;}}

修改数据库前后端配置完成之后,因为之前的文章和一些图片地址是按照在服务器所在的地址写死在数据库里面的,由于现在架构改变了,需要对数据库字段进行修改。wordpress域名修改以后,可以通过以下的sql语句修改wordpress数据库实现数据升级:

UPDATE wp_options SET option_value = replace( option_value, ';, '; ) WHERE option_name = 'home' OR option_name = 'siteurl';UPDATE wp_posts SET post_content = replace( post_content, ';, '; ) ;UPDATE wp_posts SET guid = replace( guid, ';, '; )

服务端盖完之后,打开Wordpress的管理后台,登陆到后台,查看设置———>常规里面的URL是否正常:

测试域名/blog是否正常。打开页面的时候f12查看元素页面和图片的URL是否正常。然后测试从首页跳转是否正常。在管理后台登陆不上的情况下,可以通过数据库更新URL。

msyql -u xxx -p # 连接数据库。> use wordpress; # 使用数据库> update wp_options SET option_value='; WHERE option_name='home';> update wp_options SET option_value='; WHERE option_name='siteurl';

管理后台登陆(地址过滤)Wordpress有自己的管理后台页面,一般情况下,域名地址是xxxx/wp-admin,在研究了Wordpress的默认配置发现,后端匹配到wp-admin之后转发成wp-login.php,然后在匹配自己的规则登陆管理后台。处于安全性考虑,我们限制ip登陆访问管理后台。在前端服务器去控制。

vim tyun.cnserver {listen 80;return 301 ; #强制跳转https}server {listen 443 ssl;# 监听端口server_name {server_name};# 域名ssl_certificate /usr/local/nginx/cert/;# 证书路径ssl_certificate_key /usr/local/nginx/cert/;#key 路径#官网首页配置    location / {        root /data/website/tyun/;        index index.html index.htm;        }#反向代理配置    location /blog/ {        proxy_pass https://{后端服务器地址}/;      }#配置限制ip地址登陆管理后台    location = /blog/wp-admin {        if ($remote_addr != "xxx.xxx.xxx.xxx") {          return 403;          }      proxy_pass  ;      }}

如果需要用到域名拼接或者强制指定wordpress域名地址的同学,可以直接写死在Wordpress的配置文件中。(特殊情况)

if ( ! empty( $_SERVER['HTTP_X_FORWARDED_HOST'] ) ) {   $_SERVER['HTTP_HOST'] = $_SERVER['HTTP_X_FORWARDED_HOST'];}

云管理服务专家新钛云服徐磊原创

标签: #wordpress数据库nginx