Nginx 代理Nextcloud和Wordpress
  3WKSBeHjItGr 2023年11月02日 57 0

一、准备工作

Nginx 代理Nextcloud和Wordpress_nextcloud

  1. 准备2台计算机,一台安装centos,一台安装ubuntu。
  2. centos上主要是代理功能,只是安装一个Nginx应用,其它什么都不安装。
  3. Ubuntu需要先安装docker应用,然后安装docker-compose来部署WordPress和nextcloud这两个应用。
  4. 详细表格:

序号

服务器版本

计算机名称

域名

IP地址

端口

应用

用途

1

centos

proxy

contoso.com

172.16.0.40

80

Nginx

代理转发

2

Ubuntu

container

wordpress.contoso.com

172.16.0.50

8000

wordpress

博客

3

Ubuntu

container

nextcloud.contoso.com

172.16.0.50

8080

nextcloud

云盘

二、安装Nginx和docker以及docker-compose

  1. 在proxy这台主机上安装Nginx
  2. 配置Nginx源
vim /etc/yum.repos.d/nginx.repo

[nginx-stable]

name=nginx stable repo

baseurl=http://nginx.org/packages/centos/7/$basearch/

gpgcheck=1

enabled=1

gpgkey=https://nginx.org/keys/nginx_signing.key

module_hotfixes=true
  1. 查询Nginx
yum list nginx
  1. 导入nginx 源
yum-config-manager --enable nginx-mainline
  1. 安装Nginx
yum -y install nginx
  1. 查看版本和安装的模块
nginx -v
nginx -
  1. 在container主机上安装docker和cocker-compose
  2. 先切换到root身份下
su - root
  1. 更新系统
sudo apt update
sudo apt upgrade 
sudo apt full-upgrade
  1. 添加docker源
apt install apt-transport-https ca-certificates curl software-properties-common gnupg lsb-release -y
  1. 添加 Docker 的官方 GPG 密钥
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg
  1. 添加 Docker 官方库
echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
  1. 更新 Ubuntu 源列表
apt update
  1. 安装 Docker
apt install docker-ce docker-ce-cli containerd.io docker-compose-plugin -y
  1. 检查不同版本的docker
apt-cache madison docker-ce
  1. 指定docker版本安装
apt install docker-ce=5:20.10.16~3-0~ubuntu-jammy docker-ce-cli=5:20.10.16~3-0~ubuntu-jammy containerd.io
  1. 检查docker服务
systemctl status docker
  1. 启动docker并设置开机自启
systemctl start docker && systemctl enable docker
  1. 查看已安装的 Docker 版本
docker version
  1. 安装docker-compose
curl -L "https://github.com/docker/compose/releases/download/v2.6.1/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
  1. 给docker-compose授权
chmod a+x /usr/local/bin/docker-compose

三、使用docker-compose安装应用

  1. 为了使用规范现在/root目录下新建一个wordpress文件夹
  2. 在wordpress文件夹下创建docker-compose.yml的脚本
version: '2'

volumes:
  wordpress:
  db2:

services:
  db2:
    image: mysql:5.7
    restart: always
    ports:
      - 3307:3306
    volumes:
      - db2:/var/lib/mysql
    environment:
      - MYSQL_ROOT_PASSWORD=Pa55w.rd
      - MYSQL_PASSWORD=Pa55w.rd
      - MYSQL_DATABASE=wordpress
      - MYSQL_USER=wordpress
    container_name: db2

  app2:
    image: wordpress
    restart: always
    ports:
      - 8000:80
    links:
      - db2
    volumes:
      - wordpress:/var/www/html
      - /data:/var/www/html/data
    environment:
      - MYSQL_PASSWORD=Pa55w.rd
      - MYSQL_DATABASE=wordpress
      - MYSQL_USER=wordpress
      - MYSQL_HOST=db2
    container_name: app2
  1. 执行docker-compose安装wordpress和MySQL
cd /root/wordpress
docker-compose  up -d
  1. 查看运行的容器
docker ps -a
  1. 登录网页初始化WordPress数据,能看见这个步骤基本上就安装好了。

Nginx 代理Nextcloud和Wordpress_nginx_02

  1. 在/root目录下新建一个nextcloud文件夹
  2. 在nextcloud文件夹下创建docker-compose.yml的脚本
version: '2'

volumes:
  nextcloud:
  db:

services:
  db:
    image: mysql:8
    restart: always
    ports:
    	- 3308:3306
    command: --transaction-isolation=READ-COMMITTED --binlog-format=ROW
    volumes:
      - db:/var/lib/mysql
    environment:
      - MYSQL_ROOT_PASSWORD=Pa55w.rd
      - MYSQL_PASSWORD=Pa55w.rd
      - MYSQL_DATABASE=nextcloud
      - MYSQL_USER=nextcloud
    container_name: db
      
  app:
    image: nextcloud
    restart: always
    ports:
      - 8080:80
    links:
      - db
    volumes:
      - nextcloud:/var/www/html
      - /data:/var/www/html/data
    environment:
      - MYSQL_PASSWORD=Pa55w.rd
      - MYSQL_DATABASE=nextcloud
      - MYSQL_USER=nextcloud
      - MYSQL_HOST=db
    container_name: app
  1. 执行docker-compose安装nextcloud和MySQL
cd /root/nextcloud
docker-compose  up -d
  1. 查看运行的容器
docker ps -a
  1. 登录网页初始化WordPress数据,能看见这个步骤基本上就安装好了。

Nginx 代理Nextcloud和Wordpress_docker_03

四、Nginx代理转发WordPress

  1. 在进入/etc/nginx/conf.d/下新建一个proxy.conf的文件
  2. 配置文件内容如下:
server {
    listen 80;
    server_name wordpress.contoso.com;

    location / {
        proxy_pass http://172.16.0.50:8000;
        proxy_redirect   off;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $scheme;
        proxy_set_header X-Forwarded-Host $http_host;
        proxy_set_header X-Forwarded-Port $server_port;
        proxy_hide_header X-Powered-By;
    }
}
  1. 还需要修改WordPress下wp-config.php
define('WP_HOME','http://wordpress.contoso.com' );
define('WP_SITEURL','http://wordpress.contoso.com');

Nginx 代理Nextcloud和Wordpress_WordPress_04

  1. 然后在浏览器访问wordpress.contoso.com是否访问正常。
  2. 多域名访问,这个还没有测试,以后有需要可以试试
$domain = array("www.abc.com", "www.bbs.com", "www.bcd.com");
if(in_array($_SERVER['HTTP_HOST'], $domain)){ define('WP_SITEURL', 'http://' . $_SERVER['HTTP_HOST']); define('WP_HOME', 'http://' . $_SERVER['HTTP_HOST']);}

五、Nginx代理转发nextcloud

  1. 在进入/etc/nginx/conf.d/
  2. 在原来的基础上新加一段配置
#配置nextcloud
server {
    listen 80;
    server_name nextcloud.contoso.com;

    location / {
        proxy_pass http://172.16.0.50:8080;
        proxy_redirect   off;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $scheme;
        proxy_set_header X-Forwarded-Host $http_host;
        proxy_set_header X-Forwarded-Port $server_port;
        proxy_hide_header X-Powered-By;

    }
}

#配置WordPress
server {
    listen 80;
    server_name wordpress.contoso.com;
    #return 301 https://domain.com$request_uri;

    location / {
        proxy_pass http://172.16.0.50:8000;
        proxy_redirect   off;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $scheme;
        proxy_set_header X-Forwarded-Host $http_host;
        proxy_set_header X-Forwarded-Port $server_port;
        proxy_hide_header X-Powered-By;
    }
}
  1. 在浏览器上输入nextcloud.contoso.com会出现以下错误

Nginx 代理Nextcloud和Wordpress_nextcloud_05

  1. 这时需要在config.php里的trusted_domains下的内容加上nextcloud.contoso.com
root@5e842171750f:/var/www/html/config# vim config.php
<?php
$CONFIG = array (
  'htaccess.RewriteBase' => '/',
  'memcache.local' => '\\OC\\Memcache\\APCu',
  'apps_paths' =>
  array (
    0 =>
    array (
      'path' => '/var/www/html/apps',
      'url' => '/apps',
      'writable' => false,
    ),
    1 =>
    array (
      'path' => '/var/www/html/custom_apps',
      'url' => '/custom_apps',
      'writable' => true,
    ),
  ),
  'instanceid' => 'ockh1311ol39',
  'passwordsalt' => 'h0ifH/9tQWCjCBXc8SUkVkWEIIW5Hq',
  'secret' => '/Gu+GDSkwvjDFKxxzCd4B0MW/j7QbhKKNIpLjfdEoZuLu553',
  'trusted_domains' =>
  array (
    0 => 'localhost',
    1 => '172.16.0.50',
    2 => 'nextcloud.contoso.com',
  ),
  'datadirectory' => '/var/www/html/data',
  'dbtype' => 'mysql',
  'version' => '27.0.0.8',
  'overwrite.cli.url' => 'http://172.16.0.50',
  'dbname' => 'nextcloud',
  'dbhost' => 'db',
  'dbport' => '',
  'dbtableprefix' => 'oc_',
  'mysql.utf8mb4' => true,
  'dbuser' => 'nextcloud',
  'dbpassword' => 'Pa55w.rd',
  'installed' => true,
);
  1. 一切设置妥当后打开浏览器访问Wordpress和nextcloud网页。

总结:

  • Wordpress本身的配置要注意配置文件中的define('WP_HOME','http://wordpress.contoso.com' );define('WP_SITEURL','http://wordpress.contoso.com');这2个参数。
  • nextcloud看起来友好一些,只需要在trusted_domains下添加授信的域名即可。
  • docker安装应用时尽量不使用重复有冲突的端口。



【版权声明】本文内容来自摩杜云社区用户原创、第三方投稿、转载,内容版权归原作者所有。本网站的目的在于传递更多信息,不拥有版权,亦不承担相应法律责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@moduyun.com

  1. 分享:
最后一次编辑于 2023年11月08日 0

暂无评论

推荐阅读
  jnZtF7Co41Wg   2023年12月11日   31   0   0 nginx客户端服务端
  wwLZeziuqjLR   2023年12月11日   32   0   0 Dockercentos
  MCWYWqSAMsot   2023年12月11日   33   0   0 Docker
  stLBpDewCLT1   2023年12月08日   30   0   0 nginx
  DnoStTHsc0vp   2023年12月11日   27   0   0 Docker
  wwLZeziuqjLR   2023年12月08日   103   0   0 Dockercentosbash
  jnZtF7Co41Wg   2023年12月10日   22   0   0 nginx客户端服务端NFS