Estou mudando o Apache para o Nginx no meu laboratório e temos vários projetos em subdomínios, então eu uso uma abordagem onde cada subdiretório tem seu servidor rodando em uma porta alta (8000 e acima), e o servidor principal em 80 apenas proxies para eles. Meu servidor 80 está configurado assim:
include /etc/nginx/sites-enabled/*.conf;
upstream php {
server unix:/run/php-fpm.sock;
}
server {
server_name example.com;
listen 80;
location / {
proxy_pass http://127.0.0.1:8000;
}
location /application {
proxy_pass http://127.0.0.1:8001;
}
location /phpmyadmin {
proxy_pass http://127.0.0.1:8002;
}
}
Por isso, tenho três outros serviços em diferentes portas, como segue:
server {
listen 8000;
root /var/www/path/to/application;
index index.php;
location / {
try_files $uri $uri/ /index.php?$args =404;
}
location ~ \.php$ {
include fastcgi_params;
fastcgi_pass php;
}
}
Este primeiro é um aplicativo Wordpress. Por algum motivo, ele redireciona para 127.0.0.1 em vez de passagem de proxy, e no localhost eu não tenho nada em execução, então eu obtenho 404. Mas em outro domínio. Como o que?
O serviço em 8001 ainda não existe. O serviço no 8002 é o phpmyadmin rodando assim:
server {
listen 8002;
root /var/www/path/to/phpmyadmin;
index index.php;
location / {
try_files $uri $uri/ /index.php?$args =404;
}
location ~ \.php$ {
include fastcgi_params;
fastcgi_pass php;
}
}
Este relata o erro 404, embora existam arquivos, mas pelo menos não redireciona para 127.0.0.1. O Nginx não reporta nenhum erro, nem o PHP-FPM escutando o socket.
O que está mal configurado, como posso corrigir esses erros estranhos e inconsistentes?