Apache“劫持”了Nginx的一个URL

我有一台运行Apache的Ubuntu服务器,它托pipe着一个使用HTTP访问的Wordpress站点。 还有Nginx安装了一个只能使用HTTPS访问的Django站点。

现在,我想要完成的是example.comwww.example.com将转到由Apache托pipe的Wordpress,而api.example.com将转到由Nginx托pipe的Django。 如果我只是尝试访问api.example.com主页api.example.com ,但目前还api.example.com ,但有一个奇怪的问题:当我尝试访问api.example.com/adminpipe理面板)时,页面被redirect到WordPress的pipe理login页面www.example.com/wp-admin 。 这是为什么?

我甚至尝试将Djangopipe理面板的URL更改为别的。 这反过来导致Wordpress 404页面(“哎呀,那个页面找不到!”)。

所以,域后的URL部分似乎被Apache劫持了,即使它在不同的子域中。 是什么原因造成的,我该如何解决?

Apache网站configuration如下:

 <VirtualHost *:80> ServerName www.example.com DocumentRoot /var/www/wp <Directory /var/www/wp> Options Indexes FollowSymlinks MultiViews AllowOverride All Order allow,deny allow from all </Directory> </VirtualHost> 

而Nginx的网站是这样configuration的:

 upstream app_server { server unix:/tmp/gunicorn.sock fail_timeout=0; } server { listen 443 ssl; charset utf-8; server_name api.example.com; ssl on; # Here be a lot of SSL configs location / { try_files $uri @proxy_to_app; } location @proxy_to_app { proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header Host $http_host; proxy_redirect off; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Scheme $scheme; proxy_pass http://app_server; } location /static { root /var/www/django/static; } } 

最后,我的DNSlogging是这样设置的:

 A example.com 1.2.3.4 CNAME api example.com CNAME www example.com 

感谢您的帮助提前。 如果您需要更多信息,请与我们联系。

您可能在您的networking浏览器中以这种简写formsinput了这些url,而不是猜测您想要的内容; 它可能从历史记得,当你键入“api.example.com”,它应该使用HTTPS,但对于新的URL“api.example.com/whatever”它没有历史,所以它首先尝试HTTP。

如果您使用的是相同的IP地址,则无论https://api.example.com/ *是否正在侦听HTTPS端口(443) http:// api。 example.com/ *仍将转到在HTTP端口(80)上侦听的进程。

如果您希望在保留相同IP地址的情况下避免出现这种情况,请在仅HTTP服务器中设置一个api.example.com虚拟主机,以将接收的每个请求redirect到HTTPS。

为了实际上将其分解,请将api.example.com的新IP地址添加到服务器,并使两个HTTP(S)服务器在各自的IP上进行监听,然后更新DNS,以便api.example.com指向新的IP地址。