
나는 도메인을 가지고 있으며 위치 아래 옵션을 example.com
사용하여 nodejs docker 컨테이너 3000 포트를 가리키는 nginx 웹 서버를 사용하여 내 웹 사이트를 제공합니다 .proxy pass
/
server {
listen 80 default_server;
server_name example.com www.example.com;
index index.php index.html;
access_log /var/log/nginx/access_example.com.log;
error_log /var/log/nginx/error_example.com.log;
location / {
proxy_pass http://localhost:3000;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
}
}
이제 아래에 WordPress 웹사이트를 추가하고 싶기 /blog
때문에 서버 블록 아래에 이러한 구성을 추가했습니다.
location ~ \.php$ {
include snippets/fastcgi-php.conf;
fastcgi_pass unix:/var/run/php/php7.4-fpm.sock;
}
location /blog {
root /var/www;
try_files $uri $uri/ =404;
}
/var/www/blog/
터미널에서 실행하면 새로 설치된 WordPress에 액세스할 수 없는 이유는 괜찮습니다 . 테스트를 위해 추가한 Nether 에서 파일 curl http://example.com/blog/license.txt
내용을 볼 수 있지만 로드되지는 않습니다.license.txt
/var/www/blog/
index.php
index.html
나는 문제가 try_files $uri $uri/ =404;
라인에 있다고 생각하지만 도움이 되는 것을 찾지 못했습니다. 어떤 도움이라도 감사하겠습니다
답변1
아시다시피 Wordpress는 전면 컨트롤러 아키텍처를 사용합니다. 즉, PHP 스크립트를 실행하기 위한 진입점은 $WORDPRESS_ROOT/index.php입니다. 그에 따라 요청을 라우팅하도록 nginx에 지시해야 합니다.
try_files $uri $uri/ /blog/index.php?$args;
대부분의 정적 콘텐츠에 대한 요청은 처음 2개 값 중 하나로 처리됩니다. Wordpress가 시나리오 자체를 처리해야 하므로 404 처리기가 없습니다.
하지만 index.php가 로드되지 않았습니다.
흠, 무슨 일이 일어났는지에 대한 그다지 의미 있는 설명은 아닙니다. 즉 ..../index.php에 대해 명시적으로 설명했습니까, 아니면 단지 .../ 입니까? 어떤 응답을 받았나요? 당신의 로그에는 무엇이 있었나요?
일반적으로 구성의 다른 곳에 포함되는 PHP(및 대부분의 fcgi 핸들러)에는 꽤 많은 구성이 필요합니다. 우분투에서는 repo에서 설치했다면 이것이 이미 설치되어 있을 것이라고 예상했지만, 이것을 테스트해 보는 것이 좋습니다. 또한 위의 전면 컨트롤러 수정을 수행하기 전에 이 문제를 해결하는 것이 좋습니다. 이로 인해 문제가 다소 복잡해지기 때문입니다. 간단한 "hello world" PHP 스크립트를 사용하세요.