J'utilise généralement Nginx pour diffuser du contenu statique sur mon serveur. Apache gère le contenu PHP à l'aide de PHP-FPM. Cependant, je ne parviens pas à afficher une page d'accueil de blog Wordpress et j'ai essayé tous les exemples de configuration que je peux trouver sur le Web sans trop de chance.
Voici ma config Nginx:
server {
listen XXX.XXX.XXX.XXX:80;
server_name wptest.mydomain.com;
access_log /var/log/nginx/testblog_access.log combined;
error_log /var/log/nginx/testblog-error.log;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header Host $Host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
location / {
proxy_pass http://127.0.0.1:80;
}
location = /50x.html {
root /var/www/nginx-default;
}
# No access to .htaccess files.
location ~ /\.ht {
deny all;
}
}
Ma configuration Apache est la suivante:
<VirtualHost 127.0.0.1>
ServerName wptest.mydomain.com
ServerAdmin [email protected]
LogLevel warn
ErrorLog /var/log/Apache2/testblog-error.log
CustomLog /var/log/Apache2/testblog-access.log combined
Options +FollowSymLinks +ExecCGI -Indexes -MultiViews
AddHandler php-fastcgi .php
Action php-fastcgi /wordpress
Alias /wordpress /var/www/wordpress
FastCgiExternalServer /var/www/wordpress -Host 127.0.0.1:9000
RewriteEngine on
DocumentRoot /var/www/wordpress
DirectoryIndex index.php
<Directory />
DirectoryIndex index.php
AllowOverride All
Options +FollowSymLinks +ExecCGI +SymLinksIfOwnerMatch
</Directory>
<Directory /var/www/wordpress>
AllowOverride All
Options +FollowSymLinks +ExecCGI +SymLinksIfOwnerMatch
</Directory>
</VirtualHost>
Je ne suis pas en mesure d'afficher "http://wptest.mydomain.com/" ou "http://wptest.mydomain.com/wp-admin" mais "http://wptest.mydomain.com/wp-login. php "fonctionne. Qu'est-ce que je fais mal?
Informations sur la version: + OS: Debian 5/Lenny + Apache: 2.2.9 + Nginx: 0.7.65 + Wordpress: 3.1.2
Les deux serveurs écoutent le même port. Nginx est configuré pour écouter la musique à 80 et rien n'est défini pour Apache à moins que ce ne soit dans votre fichier ports.conf.
Votre proxy passe également au port 80 d’Apache dans votre config Nginx.
Dans le changement de conf Nginx
proxy_pass http://127.0.0.1:80;
à
proxy_pass http://127.0.0.1:9000;
remplacez listen XXX.XXX.XXX.XXX:80;
par listen 80;
Dans vos Vhosts
ajouter
NameVirtualHost *:9000
Listen 9000
Au-dessus de la balise <VirtualHost>
ou dans le fichier ports.conf (si vous avez un autre vhost qui n'utilise pas Nginx, ajoutez-le en haut de votre vhost. Modifiez l'hôte virtuel pour qu'il ressemble à ceci:
<VirtualHost *9000>
Je ne sais pas si je devrais être fier ou gêné de revenir pour répondre à ma propre question plus d'un an plus tard. J'ai donc finalement trouvé le temps de travailler sur cette question aujourd'hui et j'ai réussi à faire fonctionner cette configuration. Il se trouve qu'il y avait quelques instructions manquantes dans ma configuration d'origine, mais le changement critique était dans wp-config.php. Pour tout rassembler, en commençant par ma configuration nginx (qui est presque entièrement extraite du wiki nginx):
server {
listen XXX.XXX.XXX.XXX:80;
server_name wptest.mydomain.com;
error_log /var/log/nginx/wp-error.log;
## Your only path reference.
root /var/www/wordpress;
## This should be in your http block and if it is, it's not needed here.
index index.php;
location = /favicon.ico {
log_not_found off;
access_log off;
}
location = /robots.txt {
allow all;
log_not_found off;
access_log off;
}
location / {
# This is cool because no php is touched for static content.
# include the "?$args" part so non-default permalinks doesn't break when using query string
try_files $uri $uri/ /index.php?$args;
}
location ~ \.php$ {
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header Host $Host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_pass http://127.0.0.1:80;
}
location ~* \.(js|css|png|jpg|jpeg|gif|ico)$ {
expires max;
log_not_found off;
}
}
Ensuite, ma configuration Apache:
<VirtualHost 127.0.0.1>
server_name wptest.mydomain.com
ServerAdmin [email protected]
LogLevel warn
ErrorLog /var/log/Apache2/wp-error.log
CustomLog /var/log/Apache2/wp-access.log combined
AddType application/x-httpd-fastphp .php
AddHandler php-fastcgi .php
Action php-fastcgi /fastcgi
Alias /fastcgi /var/www/wordpress
FastCgiExternalServer /var/www/wordpress -Host 127.0.0.1:9000
DocumentRoot /var/www/wordpress
#Site Directives
RewriteEngine on
Options +FollowSymLinks +ExecCGI -Indexes -MultiViews
<Directory />
AllowOverride None
</Directory>
<Directory /var/www/wordpress/>
AllowOverride Limit FileInfo AuthConfig
order allow,deny
allow from all
</Directory>
</VirtualHost>
Enfin, la ligne supplémentaire dans le fichier wp-config.php qui fait que tout fonctionne (Tiré du Codex )
$_SERVER['HTTP_Host'] = $_SERVER['HTTP_X_FORWARDED_Host'];
Avec cette configuration, j’ai testé le fait que de jolis permaliens via .htaccess fonctionnent correctement.
J'ai copié votre config et j'ai eu ces 404. Il semble que vous ayez confondu fastcgi et qu'Apache ne sache pas où trouver fastcgi et WordPress. Dès que j'ai séparé le binaire fastcgi de WordPress, j'ai pu le faire fonctionner. Dans ma configuration, WordPress était installé dans/var/www/wordpress, qui est hors de la racine du document. Ma racine du document provenait de/var. Mais je pouvais accéder à WordPress en tant que http://domain.com/wordpress/ parce que je suivais Alias.
Alias /wordpress /var/www/wordpress
Ensuite, j'ai créé un répertoire fastcgi en dehors de WordPress dans/var/www.
mkdir /var/www/fastcgi
Ensuite, j'ai lié le binaire php5-cgi à ce répertoire:
ln -s /usr/bin/php5-cgi /var/www/fastcgi/
J'ai séparé php5-cgi parce que je n'aime pas l'idée de disposer d'un fichier binaire dans le répertoire accessible via le serveur Web.
Ensuite, je configure mon Apache comme suit:
Alias /wordpress /var/www/wordpress
Alias /fastcgi /var/www/fastcgi
FastCgiExternalServer /var/www/fastcgi -Host 127.0.0.1:9000
<Directory /var/www/wordpress>
AllowOverride All
AddHandler php-fastcgi .php
Action php-fastcgi /fastcgi/php5-cgi
AddType application/x-httpd-php .php
DirectoryIndex index.php
Options +FollowSymLinks +ExecCGI +SymLinksIfOwnerMatch
</Directory>
<Location /fastcgi>
SetHandler fcgid-script
Options +ExecCGI
</Location>
Et ça a commencé à fonctionner. J'espère que cela vous aidera à réparer votre configuration Apache, laissez-moi savoir s'il y a un problème.