다중 환경 설정의 경우 다음이 있습니다.
https://www.example.com/=> 클라우드프론트 =>https://www-origin.example.com/=> 워드프레스 FastCGI
이것은 잘 작동합니다. 그러나 디버깅 목적으로 CloudFront를 우회할 수 있기를 바랍니다(SEO 문제를 방지하기 위해 robots.txt 삽입).
https://www-origin.example.com/=> 워드프레스 FastCGI
내 문제는 WordPress가 절대 URL을 저장하므로 여전히 모든 콘텐츠에 대한 CDN 링크를 반환한다는 것입니다. nginx가 응답의 링크를 포함하여 www-origin.example.com을 www.example.com으로 투명하게 다시 작성하도록 하고 싶습니다. 어떤 조언이 있습니까? fastcgi_param HTTP_HOST를 아무 소용이 없도록 설정해 보았습니다.
server {
listen 80;
listen [::]:80;
root /data/html/wordpress;
index index.php index.html index.htm;
server_name _;
client_max_body_size 100M;
access_log /var/log/nginx/access.log;
error_log /var/log/nginx/error.log;
location / {
try_files $uri $uri/ /index.php?$args;
}
location ~ \.php$ {
include snippets/fastcgi-php.conf;
fastcgi_pass unix:/var/run/php/php7.2-fpm.sock;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
}
server {
listen 80;
root /data/html/wordpress;
index index.php index.html index.htm;
server_name www-origin.example.com;
client_max_body_size 100M;
access_log /var/log/nginx/origin-access.log;
error_log /var/log/nginx/origin-error.log;
location / {
try_files $uri $uri/ /index.php?$args;
}
location ~ \.php$ {
include snippets/fastcgi-php.conf;
fastcgi_pass unix:/var/run/php/php7.2-fpm.sock;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_param HTTP_HOST www.example.com;
include fastcgi_params;
}
}
** 업데이트 27-02
지금은 다음을 얻었습니다. 어떤 의견이라도 감사하겠습니다:
server {
server_name ~^(?<subdomain>.+)-origin(?<domain>\..+\..+)$;
listen 80;
access_log /var/log/nginx/access-origin.log;
error_log /var/log/nginx/error-origin.log;
location /test
{
root /sites/$subdomain$domain;
}
location / {
proxy_pass http://127.0.0.1:80;
proxy_redirect "https://$subdomain$domain/" "https://subdomain-origin$domain/";
sub_filter_once off;
sub_filter "$subdomain$domain" "$subdomain-origin$domain";
sub_filter_types *;
proxy_http_version 1.1;
proxy_set_header Accept-Encoding "";
proxy_set_header Host $subdomain$domain;
# include details about the original request
proxy_set_header X-Original-Host $http_host;
proxy_set_header X-Original-Scheme $scheme;
proxy_set_header X-Forwarded-For $remote_addr;
}
}
server {
listen 80 default_server;
listen [::]:80;
access_log /var/log/nginx/access.log;
error_log /var/log/nginx/error.log;
root /data/html/wordpress;
index index.php index.html index.htm;
server_name _;
client_max_body_size 100M;
location / {
try_files $uri $uri/ /index.php?$args;
}