Nginx反向代理背后的WordPress Docker

eqqqjvef  于 2022-11-02  发布在  Nginx
关注(0)|答案(1)|浏览(320)

我用这个页面和他们的线程来解决问题多年,但知道我必须提出一个问题。
我试着在我的Vserver机器上安装WordPress Docker。它很好用,但是唯一的HTTP。要安装WordPress Docker,我必须使用下面Link中的教程。
此外,我总是在docker run -e ...命令中添加--restart
然后我安装了nginx 1.12.xxx有一个反向代理。但SSL没有工作。之后,我试图从nginx仓库安装一个更新的版本1.15.xx没有更好的结果。
我使用Let 's Encrypt和Certbot安装了证书。
之后,WordPress运行和wp-admin.php是可访问的。
但是我没有得到SSL/HTTPS的工作。我已经尝试了许多代码和我的同事在我的工作单位甚至不能得到一个解决方案。
我希望你能得到一个:)
我试图配置wp-config.php来启用https,比如"$_SERVER['HTTPS'] = 'on';"和其他命令,但没有效果,反而破坏了效果。
我也试过启用"X-Forwared-Proto $scheme;""FastCGI",但效果不太好。我试过它们的很多变体。
我尝试了一些从WordPress的SSL插件,但没有一个工作。

我希望这是一个小错误,你可以帮助我很容易。

p5fdfcr1

p5fdfcr11#

首先在Ubuntu上安装Docker

你可以选择像Bluemix这样的Docker提供商,也可以从softlayer或其他任何提供商那里获得虚拟机。在我的例子中,我选择了一个虚拟服务器,所以我必须在Ubuntu LTS上安装Docker。这真的很容易。基本上,你可以在apt源代码中添加一个新的存储库条目,然后安装最新的稳定的Docker包。在www.example.com上也有一个脚本get.docker.com但是我没有。用root访问权限直接从网络上执行shell脚本并不舒服,但这取决于你。

wget -qO- https://get.docker.com/ | sh

与Mac上的docker安装相比,linux上的Docker不包含docker-compose。安装docker compose很简单。docker compose脚本可以从github下载,这里是:https://github.com/docker/compose/releases

坞站撰写

Docker-compose负责管理一个包含多个Docker容器的Docker设置,包括网络和基本监控。以下脚本启动并使用nginx、mysql和wordpress构建所有Docker容器。它还导出主机文件系统上的卷,以便在Docker容器重建时轻松备份和持久化,并监控Docker容器是否已启动并运行。

version: '3'

services:
   db:
     image: mysql:latest
     volumes:
       - ./db:/var/lib/mysql
     restart: always
     environment:
       MYSQL_ROOT_PASSWORD: easytoguess
       MYSQL_DATABASE: wordpress
       MYSQL_USER: wordpress
       MYSQL_PASSWORD: eveneasier

   wordpress:
     depends_on:
       - db
     image: wordpress:latest
     restart: always
     volumes:
       - ./wordpress:/var/www/html/wp-content
     environment:
       WORDPRESS_DB_HOST: db:3306
       WORDPRESS_DB_USER: wordpress
       WORDPRESS_DB_PASSWORD: eveneasier
       WORDPRESS_DB_NAME: wordpress

   nginx:
     depends_on:
       - wordpress
     restart: always
     build:
       context: .
       dockerfile: Dockerfile-nginx
     ports:
       - "80:80"

Mysql是我们为数据库提供的第一个容器,其中包含用户名、密码和数据库名等环境变量。第7行注意将数据库文件保存在docker容器之外,以便您可以删除docker容器,启动一个新的数据库,并保持相同的数据库启动和运行。2将它指向你想要的位置。3在本例中,在同一目录下的“db”中。还要确保你想出了像样的密码。
第二个容器是wordpress。这里与第21行的host文件夹相同。此外,确保您的用户名、密码和数据库名称配置与mysql容器配置中的相同。
最后一个是nginx作为面向互联网的容器。你在这里公开端口80。当你在其他两个容器中指定一个容器时,在这个容器中你配置一个Dockerfile和一个构建上下文来定制你的nginx关于网络设置。如果你只想托管静态文件,你可以通过卷挂载来添加它。但在我们的示例中,我们需要配置nginx本身,因此我们需要一个定制的Dockerfile,如下所述。

nginx设置的停靠文件

FROM nginx:latest
COPY   default.conf /etc/nginx/conf.d/default.conf
VOLUME /var/log/nginx/log/
EXPOSE 80

这个dockerfile继承了最新的nginx的所有内容,并将默认的.conf文件复制到其中。关于如何设置配置文件,请参阅下一章。

Nginx配置文件

server {
    listen            80;
    listen       [::]:80;
    server_name  www.23-5.eu ansi.23-5.eu;
    access_log  /var/log/nginx/log/unsecure.access.log  main;
    location / {
        proxy_read_timeout    90;
        proxy_connect_timeout 90;
        proxy_redirect        off;
        proxy_pass http://wordpress;
        proxy_set_header      X-Real-IP $remote_addr;
        proxy_set_header      X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header      Host $host;
    }
}

第2行和第3行配置我们要监听的端口。我们需要一个用于ip 4,一个用于ip 6。重要的是第8行到第15行中的代理配置。第11行将所有调用重定向到“/”(所以在URL中没有路径)到服务器wordpress。因为我们使用了docker-compose,所以docker会注意通过内部DNS服务器提供地址。第13行-15重写http头,以便将所有内容Map到不同的URL,否则我们将在docker中自动生成指向http://wordpress的链接

启动系统

如果一切都配置好了,docker-compose.yml,default.conf,Dockerfile-nginx和文件夹db和wordpress都在同一个文件夹中,我们可以启动这个文件夹中的一切:

docker-compose up --build -d

参数“-d”在后台(守护进程)启动安装程序。对于第一次运行,我建议使用它,而不使用“-d”参数来查看所有调试消息。

相关问题