Estou tentando mover um site do Wordpress para o Nginx do Apache. Quando eu vou para o site principal, ele renderiza como esperado. Quando clico em uma postagem, ele tenta baixar index.php
em vez de processá-lo / renderizá-lo.
Eu configurei o nginx de acordo com o link
Meu nginx.conf
user www-data;
worker_processes auto;
pid /run/nginx.pid;
events {
worker_connections 768;
# multi_accept on;
}
http {
sendfile on;
tcp_nopush on;
tcp_nodelay on;
keepalive_timeout 65;
types_hash_max_size 2048;
include /etc/nginx/mime.types;
default_type application/octet-stream;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2; # Dropping SSLv3, ref: POODLE
ssl_prefer_server_ciphers on;
access_log /var/log/nginx/access.log;
error_log /var/log/nginx/error.log;
gzip on;
gzip_disable "msie6";
include /etc/nginx/conf.d/*.conf;
include /etc/nginx/sites-enabled/*;
}
e meu arquivo li394-200.members.linode.com
em sites-available
server {
listen 80;
listen [::]:80;
server_name li394-200.members.linode.com;
root /var/www/html/li394-200.members.linode.com/public_html;
index index.html index.php;
location / {
try_files $uri $uri/ /index.php$args =404;
}
location ~ .*\.php$ {
include snippets/fastcgi-php.conf;
include fastcgi_params;
fastcgi_pass unix:/run/php/php7.0-fpm.sock;
fastcgi_param SCRIPT_FILENAME /var/www/html/li394-200.members.linode.com/public_html$fastcgi_script_name;
}
}
Se eu navegar para o link , ele renderiza como esperado. Além disso, o link está correto. Mas se eu for para link diz 'Você escolheu abrir ... application / octet-stream.' Quando eu digo OK e baixo, é index.php do meu diretório wordpress.
Minha estrutura de permalink é /archives/%year%/%monthnum%/%day%/%postname%/
. Se eu alterar o permalink para Plain, posso navegar para o link corretamente.
Eu segui o conselho no link e adicionei
try_files $uri $uri/ /index.php?args;
para o bloco de localização. Quando eu reiniciar o nginx, recebo
[emerg] try_files directive is duplicate in /etc/nginx/snippets/fastcgi-php.conf:5
Eu nem vejo onde estou incluindo esse arquivo. Mas esse arquivo parece
# regex to split $uri to $fastcgi_script_name and $fastcgi_path
fastcgi_split_path_info ^(.+\.php)(/.+)$;
# Check that the PHP script exists before passing it
try_files $fastcgi_script_name =404;
# Bypass the fact that try_files resets $fastcgi_path_info
# see: http://trac.nginx.org/nginx/ticket/321
set $path_info $fastcgi_path_info;
fastcgi_param PATH_INFO $path_info;
fastcgi_index index.php;
include fastcgi.conf;
então $fastcgi_script_name
deve conter a mesma coisa, mas eu não sei como ver o que é isso. Eu não vejo nada no meu diretório public_html
que se parece com um script fast-cgi (embora eu possa não saber quando o vejo).
Se eu usar meu permalink personalizado ou o padrão, não há .php
no URI, então não entendo como essa diretiva de localização está capturando isso.