AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • Início
  • system&network
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • Início
  • system&network
    • Recentes
    • Highest score
    • tags
  • Ubuntu
    • Recentes
    • Highest score
    • tags
  • Unix
    • Recentes
    • tags
  • DBA
    • Recentes
    • tags
  • Computer
    • Recentes
    • tags
  • Coding
    • Recentes
    • tags
Início / server / Perguntas / 747972
Accepted
Tim
Tim
Asked: 2016-01-11 00:44:07 +0800 CST2016-01-11 00:44:07 +0800 CST 2016-01-11 00:44:07 +0800 CST

Problema Nginx HHVM Wordpress com execução PHP em um subdiretório intermediário

  • 772

Estou com uma situação estranha com um dos meus sites, ainda em desenvolvimento na AWS. Eu tenho nginx 1.9.9 com HHVM 3.6.6-1.amzn1.x86_64 em um t2.micro. Não é acessível ao público.

Eu tenho um site escrito personalizado na raiz do domínio, tenho o Wordpress no diretório /blog e o administrador do wordpress está em /blog/wp-admin. O site personalizado tem vários arquivos, incluindo index.php. Wordpress tem index.php e todos os tipos de outras coisas no diretório do blog, wp-admin usa index.php também.

Eu posso carregar o site personalizado, ele funciona totalmente. O administrador do Wordpress funciona totalmente. A tela inicial / lista de histórias do blog Wordpress funciona totalmente. O problema é que, quando clico em qualquer um dos links do artigo do blog para visualizá-lo na íntegra, ele mostra o índice inicial do site personalizado. Então, para dizer de outra maneira

http://www.example.com/index.php  - custom website works
http://www.example.com/blog/index.php  - blog index works
http://www.example.com/blog/2015/storyname - story load doesn't work with permalink %postname% regardless of text in post name - http://www.example.com/index.php loads
http://www.example.com/blog/2015/?p=96 - story load works
http://www.example.com/blog/wp-admin/ - admin works

Quando clico no link da história, obtenho o mesmo conteúdo da página como se tivesse clicado em http://www.example.com/index.php , exceto que as imagens não carregam porque são feitas com URLs relativos

http://www.example.com/blog/2015/storyname

Quando carrego a raiz do site /index.php, recebo os seguintes cabeçalhos de depuração (veja minha configuração abaixo para saber como eles são gerados)

Z_LOCATION: PHP MAIN
URI: /index.php
Z_DOCUMENT_ROOT: /var/www/hr
Z_FASTCGI_SCRIPT_NAME: /index.php
Z_REQUEST_FILENAME: /var/www/hr/index.php

Quando carrego /wp-admin/ recebo esses cabeçalhos de volta

Z_LOCATION: PHP MAIN
URI: /blog/wp-admin/index.php
Z_DOCUMENT_ROOT: /var/www/hr
Z_FASTCGI_SCRIPT_NAME: /blog/wp-admin/index.php
Z_REQUEST_FILENAME: /var/www/hr/blog/wp-admin/index.php

Quando carrego o blog home /blog/index.php, recebo esses cabeçalhos de volta

Z_LOCATION: PHP MAIN
URI: /blog/index.php
Z_DOCUMENT_ROOT: /var/www/hr
Z_FASTCGI_SCRIPT_NAME: /blog/index.php
Z_REQUEST_FILENAME: /var/www/hr/blog/index.php

Quando tento carregar este URL http://www.example.com/blog/2015/storyname , recebo os seguintes cabeçalhos de volta. Z_REQUEST_FILENAME (acima) mostra a URL errada sendo carregada.

Z_LOCATION: PHP MAIN
URI: /index.php
Z_DOCUMENT_ROOT: /var/www/hr
Z_FASTCGI_SCRIPT_NAME: /index.php
Z_REQUEST_FILENAME: /var/www/hr/index.php

Não tenho ideia de por que ele tenta carregar o index.php raiz do site quando clico nesse URL. Pistas:

  • Alterar a estrutura do permalink do Wordpress de %postname% para ?p=123 corrige o problema
  • Nenhuma das outras estruturas de permalink ajuda em nada

Por que isso seria um problema apenas para visualizar os artigos do blog???? Eu me pergunto se é algo a ver com o try_files?

Não há nada no log de erros do hhvm, não há nada no log de erros do nginx. O log de acesso mostra o seguinte quando solicito o último URL

(IP removed) - - [10/Jan/2016:08:22:19 +0000] "GET /blog/2015/storyname HTTP/1.1" 200 4424 "http://www.example.com/blog/" "Mozilla/5.0 (Windows NT 10.0; WOW64; rv:43.0) Gecko/20100101 Firefox/43.0" "-" "0.050"

Aqui está a configuração do meu site nginx. Não incluí o nginx.conf principal porque não acho que seja relevante. NB Eu atualizei este trabalho o código de trabalho.

server {
  server_name www.example.com;
  root /var/www/hr;
  access_log      /var/log/nginx/hr.access.log main;

  # Default location to serve
  location / {
    try_files $uri $uri/ /blog/index.php?$args;
    add_header Z_LOCATION "hr_root"; add_header URI $uri; # DEBUG
  }

  location ~*      \.(jpg|jpeg|png|gif|css|js)$ {
    log_not_found off; access_log off;
    add_header Z_LOCATION "STATIC RESOURCES REGEX"; add_header URI $uri;      # DEBUG
  }

  # Send HipHop and PHP requests to HHVM
  location ~ \.(hh|php)$ {
    fastcgi_keep_conn on;
    fastcgi_intercept_errors on;
    fastcgi_pass       php;
    include                        fastcgi_params;
    fastcgi_param      SCRIPT_FILENAME $document_root$fastcgi_script_name;

    # DEBUGGING
    add_header Z_LOCATION "PHP MAIN"; add_header URI $uri;
    add_header Z_DOCUMENT_ROOT "$document_root"; add_header Z_FASTCGI_SCRIPT_NAME "$fastcgi_script_name";
    add_header Z_REQUEST_FILENAME "$request_filename";
  }
}

# Forward non-www requests to www
server {
  listen 0;
  server_name example.com;
  return 302 http://www.example.com$request_uri;
}

Quaisquer pensamentos, ideias ou ajuda são apreciados. Este é bastante encaracolado, para mim, mas suspeito que será uma mudança simples para corrigi-lo.

nginx
  • 1 1 respostas
  • 335 Views

1 respostas

  • Voted
  1. Best Answer
    Richard Smith
    2016-01-11T02:17:26+08:002016-01-11T02:17:26+08:00

    A entrega de conteúdo do WordPress é realizada pelo /blog/index.phpscript. Presumivelmente, isso é invocado quando você envia o URI /blog/por causa da $uri/cláusula em try_files. Mas você não tem regras para invocar /blog/index.phppara qualquer outro URI que comece com /blog/....

    Uma opção é tornar o WorkPress o padrão:

    location / {
        try_files $uri $uri/ /blog/index.php?$args;
        ...
    }
    

    Como alternativa, adicione outro bloco de localização para lidar apenas com os URIs que começam com /blog/...:

    location /blog {
        try_files $uri $uri/ /blog/index.php?$args;
        ...
    }
    
    • 4

relate perguntas

Sidebar

Stats

  • Perguntas 205573
  • respostas 270741
  • best respostas 135370
  • utilizador 68524
  • Highest score
  • respostas
  • Marko Smith

    Você pode passar usuário/passar para autenticação básica HTTP em parâmetros de URL?

    • 5 respostas
  • Marko Smith

    Ping uma porta específica

    • 18 respostas
  • Marko Smith

    Verifique se a porta está aberta ou fechada em um servidor Linux?

    • 7 respostas
  • Marko Smith

    Como automatizar o login SSH com senha?

    • 10 respostas
  • Marko Smith

    Como posso dizer ao Git para Windows onde encontrar minha chave RSA privada?

    • 30 respostas
  • Marko Smith

    Qual é o nome de usuário/senha de superusuário padrão para postgres após uma nova instalação?

    • 5 respostas
  • Marko Smith

    Qual porta o SFTP usa?

    • 6 respostas
  • Marko Smith

    Linha de comando para listar usuários em um grupo do Windows Active Directory?

    • 9 respostas
  • Marko Smith

    O que é um arquivo Pem e como ele difere de outros formatos de arquivo de chave gerada pelo OpenSSL?

    • 3 respostas
  • Marko Smith

    Como determinar se uma variável bash está vazia?

    • 15 respostas
  • Martin Hope
    Davie Ping uma porta específica 2009-10-09 01:57:50 +0800 CST
  • Martin Hope
    kernel O scp pode copiar diretórios recursivamente? 2011-04-29 20:24:45 +0800 CST
  • Martin Hope
    Robert ssh retorna "Proprietário incorreto ou permissões em ~/.ssh/config" 2011-03-30 10:15:48 +0800 CST
  • Martin Hope
    Eonil Como automatizar o login SSH com senha? 2011-03-02 03:07:12 +0800 CST
  • Martin Hope
    gunwin Como lidar com um servidor comprometido? 2011-01-03 13:31:27 +0800 CST
  • Martin Hope
    Tom Feiner Como posso classificar a saída du -h por tamanho 2009-02-26 05:42:42 +0800 CST
  • Martin Hope
    Noah Goodrich O que é um arquivo Pem e como ele difere de outros formatos de arquivo de chave gerada pelo OpenSSL? 2009-05-19 18:24:42 +0800 CST
  • Martin Hope
    Brent Como determinar se uma variável bash está vazia? 2009-05-13 09:54:48 +0800 CST

Hot tag

linux nginx windows networking ubuntu domain-name-system amazon-web-services active-directory apache-2.4 ssh

Explore

  • Início
  • Perguntas
    • Recentes
    • Highest score
  • tag
  • help

Footer

AskOverflow.Dev

About Us

  • About Us
  • Contact Us

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve