wordpress - Nginx 作为 Docker VHosts 的反向代理

标签 wordpress nginx dns docker reverse-proxy

我目前正在尝试构建自己的网络服务器/服务,并希望设置如下内容:

  • 主要“博客”的 Wordpress
  • 用于我的 git 存储库的 Gitlab
  • Owncloud 用于我的数据存储

我一直在使用 Docker 来运行一个漂亮的小 gitlab,它工作得非常好,用我的域映射到我的网络服务器上的端口 :81。

让我有点恼火的是,Docker 镜像总是绑定(bind)到一个特定的端口号,因此不太容易记住,所以我想做这样的事情:

git.mydomain.com for gitlab
mydomain.com (no subdomain) for my blog
owncloud.mydomain.com for owncloud

据我了解,我需要一个反向代理,我决定使用 nginx。所以我这样设置:

http {
include       mime.types;
default_type  application/octet-stream;

sendfile        on;

keepalive_timeout  65;

server {
    listen       80;
    server_name  mydomain.com;
    location / {
            proxy_pass http://localhost:84;
            proxy_set_header Host $host;
            proxy_set_header X-Real-IP $remote_addr;
            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    }

    error_page   500 502 503 504  /50x.html;
    location = /50x.html {
        root   /usr/share/nginx/html;
    }
server {
    listen 80;
    server_name git.mydomain.com;

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

这样,我的 git.mydomain.com 完美运行,但我的 wordpress 只显示一个空白网页。我的 DNS 设置如下:

Host   Type   MX Destination
*      A      IP
@      A      IP
www    CNAME   @

是我太傻还是怎么回事?

最佳答案

我知道您的问题更具体地是关于您的 Nginx 代理配置,但我认为给您 this link 会很有用。其中详细介绍了如何设置 Nginx docker 容器,该容器自动部署配置以反向代理这些 docker 容器。换句话说,您运行反向代理,然后运行其他容器,Nginx 容器将根据主机名将流量路由到其他容器。

基本上,您拉出代理容器并使用 docker run 命令中设置的一些参数运行它,然后启动您想要代理的其他容器。一旦你安装了 docker 并拉取了 nginx-proxy 镜像,我用来启动代理的具体命令:

docker run -d --name="nginx-proxy"--restart="always"-p 80:80\ -v/var/run/docker.sock:/tmp/docker.sock jwilder/nginx-proxy

现在代理正在运行。您可以通过将浏览器指向您的地址来进行验证,这应该会返回 Nginx 502 或 503 错误。你会得到错误,因为还没有任何东西在听。要启动其他容器,非常简单,如下所示:

docker run -d --name="example.com"--restart="always"\ -e "VIRTUAL_HOST=example.com"w3b1x/mywebcontainer

-e "VIRTUAL_HOST=example.com" 就是让您的 Nginx 代理将流量路由到您正在启动的容器所需的全部内容。

自从我开始使用 Docker 以来,我一直在使用这种特殊的方法,它对于这种情况非常方便。我链接的文章为您提供了分步说明和您需要的所有信息。如果您需要更多信息(特别是关于在此设置中实现 SSL),您可以查看 the git repository对于这个软件。

关于wordpress - Nginx 作为 Docker VHosts 的反向代理,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26816076/

相关文章:

php 转发访问者 ip 到 nginx

heroku - 如何将 GoDaddy 子域指向 Heroku 应用程序?

php - 5.2.17 中的 idn_to_ascii()

wordpress - 我有 WP multisite、ACM Issued SSL、Load Balancer Setup,如何为用户提供 HTTPS 访问?

php - 下划线以字母间距延伸到词尾之外

php - SVG - 定位不起作用

linux - Nginx 上游配置

nginx - 使用 Nginx 从 URL 中删除索引文件

dns - 网站页面加载速度很慢

php - 如何修改此查询,以便开始/结束日期按天而不是精确时间?