我自托管了一堆托管在各种虚拟机/容器中的服务,并使用 Caddy v1 服务器作为反向代理来通过各种子域访问它们。
我最近启动了几个 Wordpress 站点,它们托管在具有 Nginx 服务器的单独 VM 上,每个站点都有单独的启用站点的配置,但共享 Mariadb 实例和唯一的 WP 表前缀。
我首先在我的主域的子域上托管其中一个站点,我们称之为 apple.orange.com,它与 Caddy 的自动 LE 证书一起工作得很好。我有一个专用域,比如说 apple.com,并尝试将 Caddy 配置更改为:
- 代理 apple.com 到我的 Nginx 虚拟机。
- 将 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。
我试过了:
- 重新启动两台服务器。
- 在我的 Caddyfile 中删除了对 apple.orange.com 的任何提及,但这只会使 apple.com 重定向到一个不再存在的站点。
- 设置一个全新的 Caddy 实例并仅添加 apple.com 以代理到我的 nginx 虚拟机,但我不得不将证书从旧实例复制到新实例,因为我达到了 LE 的速率限制一周,但这并没有有所作为,apple.com 仍在重定向到 apple.orange.com。
- 从 nginx 站点配置中完全删除 apple.orange.com,但这只是使其停止为该站点提供服务。
- 查看可能在任一网络服务器上保留错误配置的任何缓存目录,但一无所获。
所以我在这里,经过 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)。
提前感谢您的帮助!