У меня такая же проблема, как этот вопрос где я использую Nginx в качестве прокси для сервера Apache (Ubuntu) под управлением WordPress. Все внутренние ссылки сайта дают 301 редирект на localhost.
Например, ссылка: wwww.example.com/internal-link
перенаправляет на localhost/internal-link
что дает ошибку 404.
В Apache конфигурации следующие:
<VirtualHost *:80>
<Directory /var/www/html>
Options Indexes FollowSymLinks MultiViews
AllowOverride All
Order allow,deny
allow from all
Require all granted
</Directory>
ServerAdmin email@email.com
ServerName example.com
ServerAlias www.example.com
ServerAlias *.example.com
DocumentRoot /var/www/html
...
В Nginx файл конфигурации выглядит следующим образом:
server {
# Where IP is server IP and example is the domain name
listen IP:80;
server_name static.example.com;
location / {
proxy_pass http://localhost:8480;
proxy_set_header X-Real-IP $remote_addr;
}
}
server {
listen IP:80;
server_name example.com;
rewrite ^ $scheme://www.example.com$request_uri redirect;
}
server {
listen IP:80; # your server's public IP address
server_name www.example.com; # your domain name
location / {
proxy_pass http://localhost:8020;
proxy_set_header X-Real-IP $remote_addr;
}
}
В .htaccess
по умолчанию генерируется WordPress:
# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>
# END WordPress
вот некоторые записи журнала доступа Apache:
10.0.2.2 - - [15/Jul/2016:07:11:31 -0400] "GET /link/ HTTP/1.0" 301 335 "-" "Mozilla/5.0 (compatible; Cliqzbot/1.0 +http://cliqz.com/company/cliqzbot)"
10.0.2.2 - - [15/Jul/2016:07:08:02 -0400] "GET /link/ HTTP/1.0" 404 5396 "-" "Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:21.0)
есть идеи, что вызывает это и как это исправить?
Я использую следующий серверный блок NGINX, чтобы proxy_pass
все запросы к локальному HTTP-серверу Apache:
# cat /usr/local/etc/nginx/conf.d/apache24.conf
server {
listen 80;
location / {
proxy_pass http://127.0.0.1;
proxy_set_header Host $host;
proxy_set_header X-Forwarded-For $remote_addr;
proxy_set_header X-Real-IP $remote_addr;
proxy_pass_header server;
}
}
#
и HTTP-сервер Apache VirtualHost
настроил нормально.