0

我自托管了一堆托管在各种虚拟机/容器中的服务,并使用 Caddy v1 服务器作为反向代理来通过各种子域访问它们。

我最近启动了几个 Wordpress 站点,它们托管在具有 Nginx 服务器的单独 VM 上,每个站点都有单独的启用站点的配置,但共享 Mariadb 实例和唯一的 WP 表前缀。

我首先在我的主域的子域上托管其中一个站点,我们称之为 apple.orange.com,它与 Caddy 的自动 LE 证书一起工作得很好。我有一个专用域,比如说 apple.com,并尝试将 Caddy 配置更改为:

  1. 代理 apple.com 到我的 Nginx 虚拟机。
  2. 将 apple.orange.com 重定向到 apple.com。

我在我的 nginx 服务器上更改了该站点的启用站点配置,以将 server_name 更改为 apple.com。

这是我开始遇到我没想到的问题的地方。当我尝试访问 apple.com 时开始收到太多重定向,发现 apple.com 正在重定向到 apple.orange.com,这很奇怪,而 apple.orange.com 正在重定向到 apple.com预期,创建一个循环。

我将我的 Caddyfile 更改为将 apple.orange.com 代理到我的 nginx 虚拟机,并添加了一个站点配置以在 orange.apple.com 和 apple.com 上提供相同的文件,以恢复站点。

从那以后,我一直无法让 apple.com 停止重定向到 orange.apple.com。

我试过了:

  1. 重新启动两台服务器。
  2. 在我的 Caddyfile 中删除了对 apple.orange.com 的任何提及,但这只会使 apple.com 重定向到一个不再存在的站点。
  3. 设置一个全新的 Caddy 实例并仅添加 apple.com 以代理到我的 nginx 虚拟机,但我不得不将证书从旧实例复制到新实例,因为我达到了 LE 的速率限制一周,但这并没有有所作为,apple.com 仍在重定向到 apple.orange.com。
  4. 从 nginx 站点配置中完全删除 apple.orange.com,但这只是使其停止为该站点提供服务。
  5. 查看可能在任一网络服务器上保留错误配置的任何缓存目录,但一无所获。

所以我在这里,经过 3 天的愤怒,完全被正在发生的事情弄糊涂了。将不胜感激有关如何解决此问题的任何见解。

这是一堆相关的文件/配置:

球童档案

# a bunch of other subdomains exist in the same file, but I also tried with just this.
apple.com, www.apple.com {
  proxy / 10.0.1.108 {
    transparent
  }
}
apple.orange.com
  proxy / 10.0.1.108 {
    transparent
  }
}

/etc/nginx/sites-enabled/apple.com

server {
    listen 80;
    listen [::]:80;
    root /var/www/html/apple.com;
    index  index.php index.html index.htm;
    server_name apple.com www.apple.com *.apple.com apple.orange.com;

    client_max_body_size 100M;
    autoindex off;
    location / {
        try_files $uri $uri/ /index.php?$args;
    }

    location ~ \.php$ {
         include snippets/fastcgi-php.conf;
         fastcgi_pass unix:/var/run/php/php7.4-fpm.sock;
         fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
         include fastcgi_params;
    }
}

/etc/nginx/nginx.conf

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
    ##

    access_log /var/log/nginx/access.log;
    error_log /var/log/nginx/error.log;

    ##
    # Gzip Settings
    ##

    gzip on;

    # Compression level (1-9)
    gzip_comp_level     5;

    # Don't compress anything under 256 bytes
    gzip_min_length     256;

    # Compress output of these MIME-types
    gzip_types
        application/atom+xml
        application/javascript
        application/json
        application/rss+xml
        application/vnd.ms-fontobject
        application/x-font-ttf
        application/x-font-opentype
        application/x-font-truetype
        application/x-javascript
        application/x-web-app-manifest+json
        application/xhtml+xml
        application/xml
        font/eot
        font/opentype
        font/otf
        image/svg+xml
        image/x-icon
        image/vnd.microsoft.icon
        text/css
        text/plain
        text/javascript
        text/x-component;

    # Disable gzip for bad browsers
    gzip_disable  "MSIE [1-6]\.(?!.*SV1)";
    # 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
    ##

    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;
#   }
#}

显然,apple.com 不是我的,orange.com 也不是。让我知道实际域是否相关(如果是 DNS 问题,我对此表示怀疑,因为请求正在发送到我的 IP)。

提前感谢您的帮助!

4

1 回答 1

0

因此,在随机谷歌搜索将 wordpress 网站迁移到新域后,我发现了问题所在。显然它并不像将域指向 nginx 站点那么简单,wordpress 安装有一个站点 URL 字段,需要知道该站点的服务位置

所以重定向不是来自 Caddy,它们不是来自 Nginx,它们来自实际的 wordpress 站点。

于 2020-06-07T04:44:33.793 回答