ECS 启动三个workdpress 容器

阿里云 ECS 服务器 通过 nginx域名分发 配置多个wordpress 博客

阿里云 ECS 服务器 通过 nginx 配置多个wordpress 博客

众所周知,做SEO最好的CMS发布系统,就是WordPress了,在这个云服务器时代,当然是自己买一台云服务器,然后自己在上面搭一个wordpress了。

通过 docker 启动 wordpress 容器

  • 购买一台ECS的服务器,我购买的配置如下:
    阿里云 ECS服务器
    阿里云 ECS服务器

ECS购买链接
然后通过shell 脚本远程登录, 执行如下脚本,如果没有安装 docker 和 workdpress 镜像,自己进行相应的下载。

docker run --name xunl -p 8080:80 -v /root/xunl:/var/www/html -d wordpress

docker run --name smartshop -p 8081:80 -v /root/smartshop:/var/www/html -d wordpress

docker run --name ssevening -p 8080:80 -v /root/wordpress:/var/www/html -d wordpress

这个时候,通过IP 加 端口已经可以访问你的wordpress 网站了,但我们还没有绑定域名。

我们把域名的DNS解析指向到 当前的主机IP。

安装 nginx 服务器,用来分流。

最一开始的时候,我nginx 也是使用的docker 容器来启动后,但发现 docker 容器没办法 访问其他的docker 容器的网络。

所以 我就直接在 ubuntu 里面安装了 nginx.

sudo apt-get install nginx

我们在服务器 上执行上述脚本安装 nginx。

安装好的文件位置:

/usr/sbin/nginx:主程序

/etc/nginx:存放配置文件

/usr/share/nginx:存放静态文件

/var/log/nginx:存放日志

sudo service nginx start

可以通过上述命令启动 nginx服务器。

这个时候,就可以通过域名直接访问80端口了。

配置nginx的分流。

我们一步到位,直接给出全的配置文件来。

user www-data;
worker_processes auto;
pid /run/nginx.pid;
include /etc/nginx/modules-enabled/*.conf;

events {
    worker_connections 768;
    # multi_accept on;
}

http {

    ##
    # Basic Settings
    ##

    sendfile on;
    tcp_nopush on;
    tcp_nodelay on;
    keepalive_timeout 65;
    types_hash_max_size 2048;
    # server_tokens off;

    # server_names_hash_bucket_size 64;
    # server_name_in_redirect off;

    include /etc/nginx/mime.types;
    default_type application/octet-stream;

    ##
    # SSL Settings
    ##

    ssl_protocols TLSv1 TLSv1.1 TLSv1.2 TLSv1.3; # Dropping SSLv3, ref: POODLE
    ssl_prefer_server_ciphers on;

    ##
    # Logging Settings
    ##

    error_log /var/log/nginx/error.log;
    rewrite_log on;
    log_format  main    
    ' $remote_user [$time_local]  $http_x_Forwarded_for $remote_addr  $request '  
    '$http_x_forwarded_for '                       
    '$upstream_addr '                        
    'ups_resp_time: $upstream_response_time '                        
    'request_time: $request_time';  

    access_log /var/log/nginx/access.log main;  

    ##
    # Gzip Settings
    ##

    gzip on;

    # gzip_vary on;
    # gzip_proxied any;
    # gzip_comp_level 6;
    # gzip_buffers 16 8k;
    # gzip_http_version 1.1;
    # gzip_types text/plain text/css application/json application/javascript text/xml application/xml application/xml+rss text/javascript;

    ##
    # Virtual Host Configs
    ##

 server {
listen 443 ssl;    
server_name xunl.net www.xunl.net; 
    access_log on;
    access_log /var/log/nginx/xunl.log;
    ssl_certificate     /root/nginx_ssl/6464464_www.xunl.net.pem;
    ssl_certificate_key  /root/nginx_ssl/6464464_www.xunl.net.key;
    # ssl验证相关配置
    ssl_session_timeout  5m;    #缓存有效期
    ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4;    #加密算法
    ssl_protocols TLSv1 TLSv1.1 TLSv1.2;    #安全链接可选的加密协议
    ssl_prefer_server_ciphers on;   #使用服务器端的首选算法

    location / { 
        proxy_pass http://localhost:8082;   
        proxy_set_header Host $host;
      proxy_set_header X-Real-IP $remote_addr;
      proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; 
          client_max_body_size 32m;  
    }
  }

  server {
    listen 443 ssl; 
    server_name bestsmartshop.com www.bestsmartshop.com; 
    access_log on;
    access_log /var/log/nginx/smartshop.log;

    ssl_certificate     /root/nginx_ssl/6462954_www.bestsmartshop.com.pem; 
    ssl_certificate_key  /root/nginx_ssl/6462954_www.bestsmartshop.com.key;

    # ssl验证相关配置
    ssl_session_timeout  5m;    #缓存有效期
    ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4;    #加密算法
    ssl_protocols TLSv1 TLSv1.1 TLSv1.2;    #安全链接可选的加密协议
    ssl_prefer_server_ciphers on;   #使用服务器端的首选算法

     location / { 
        proxy_pass http://localhost:8081;      
        proxy_set_header Host $host;
      proxy_set_header X-Real-IP $remote_addr;
      proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
          client_max_body_size 32m; 
    }     
  }

  server {
    listen 443 ssl; 
    server_name ssevening.com www.ssevening.com; 
    access_log on;
    access_log /var/log/nginx/ssevening.log;

    ssl_certificate     /root/nginx_ssl/6463350_www.ssevening.com.pem; 
    ssl_certificate_key  /root/nginx_ssl/6463350_www.ssevening.com.key;

    # ssl验证相关配置
    ssl_session_timeout  5m;    #缓存有效期
    ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4;    #加密算法
    ssl_protocols TLSv1 TLSv1.1 TLSv1.2;    #安全链接可选的加密协议
    ssl_prefer_server_ciphers on;   #使用服务器端的首选算法

    location / { 
        proxy_pass http://localhost:8080;      
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
          proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
 client_max_body_size 32m; 
    }     
  }

server {
    listen       80;
    server_name  bestsmartshop.com www.bestsmartshop.com;
    return 301 https://$server_name$request_uri;
}

server {
    listen       80;
    server_name  ssevening.com www.ssevening.com;

    if ($scheme = http) {
        return 301 https://$host$request_uri;
    }
}

server {
    listen       80;
    server_name  xunl.net www.xunl.net;

    if ($scheme = http) {
        return 301 https://$host$request_uri;
    }
}

    include /etc/nginx/conf.d/*.conf;
    include /etc/nginx/sites-enabled/*;
}

#mail {
#   # See sample authentication script at:
#   # http://wiki.nginx.org/ImapAuthenticateWithApachePhpScript
# 
#   # auth_http localhost/auth.php;
#   # pop3_capabilities "TOP" "USER";
#   # imap_capabilities "IMAP4rev1" "UIDPLUS";
# 
#   server {
#       listen     localhost:110;
#       protocol   pop3;
#       proxy      on;
#   }
# 
#   server {
#       listen     localhost:143;
#       protocol   imap;
#       proxy      on;
#   }
#}

所以现在我们来看看 ECS服务器上 启动了 三个 docker 容器如下:
ECS 启动三个workdpress 容器

去ping 三个域名的话,三个域名 都是指向到一个IP的。

会了这个的话,大家可以去卖博客服务器了。然后每年都收租金就不是梦了。

https ssl 的配置

自己申请SSL证书后,然后上传并配置就可以了。

修改 wordpress 后台的配置地址为 域名网址

  • 两个网址都修改为:https://www.ssevening.com (替换为你的域名)

  • 先不要着急去验证,再去配置下面的 wp-config.php

  • 然后才会大功告成。

wordpress admin 目录循环重定向的问题解决

添加 $_SERVER['HTTPS'] = 'on' 到 wp-config.php 中

参考:https://qastack.cn/wordpress/170165/wordpress-wp-admin-https-redirect-loop

你可能还想了解

修改wordpress 文件上传大小

最后,加一个Zip命令,经常用来备份的:
zip a.zip -r dir

nginx wordpressnginx wordpress 设定nginx wordpress dockernginx wordpress confignginx wordpress 502nginx wordpress 404nginx wordpress sslnginx wordpress installnginx wordpress 502 bad gatewaynginx wordpress https

6人评论了“阿里云 ECS 服务器 通过 nginx域名分发 配置多个wordpress 博客”

  1. Pingback: docker 中的 wordpress 怎么修改网站图标 - 用户增长黑客干货

  2. Pingback: 阿里云上docker中wordpress启用ssl https - 用户增长黑客干货

  3. Pingback: docker中的wordpress子站点子目录搭建方案 - 用户增长黑客干货

  4. Pingback: SEO用户增长 Yoast SEO Premium 增长利器 - 用户增长黑客干货

  5. Pingback: 阿里云 docker wordpress 无法将上传的文件移动至wp-content/uploads 怎么办

  6. Pingback: 通过webhooks 实现 wordpress 发文章时,自动推送功能 -

发表评论

您的电子邮箱地址不会被公开。