Я хочу запустить WordPress и YOURLS в одном домене, который настроен блоком сервера NGINX (не сайтом по умолчанию).Поскольку оба должны обрабатывать URL по-разному, им нужны разные директивы try_files
.WordPress находится в корне домена (domain.tld), а YOURLS устанавливается в каталог / g /.Несмотря на два правила местоположения, я получаю 404 по любым ссылкам, созданным YOURLS (например, domain.tld / g / linkname, все перенаправления на внешние URL-адреса), хотя я могу получить доступ к административному бэкэнду.Насколько я читаю, объявления правил размещения (одного для / g / и одного для /) должно быть достаточно, чтобы позволить NGINX по-разному обрабатывать прямые и / g / URLS - что-то не так в моем мышлении?Правила try_files
являются правильными и хорошо работают с другим блоком сервера одного приложения (WordPress, а также YOURLS при установке на отдельные блоки сервера).
Конфигурация определения блока сервера выглядит следующим образом:
server {
listen [::]:80;
listen 80;
server_name domain.tld www.domain.tld;
return 301 https://domain.tld$request_uri;
}
server {
listen [::]:443 ssl;
listen 443 ssl;
ssl_certificate /etc/letsencrypt/live/domain.tld/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/domain.tld/privkey.pem;
add_header Strict-Transport-Security "max-age=31536000; includeSubDomains";
root /var/www/html/domain.tld;
# Add index.php to the list if you are using PHP
index index.html index.htm index.nginx-debian.html index.php;
server_name domain.tld www.domain.tld;
location ~ \.php$ {
fastcgi_split_path_info ^(.+\.php)(/.+)$;
include snippets/fastcgi-php.conf;
fastcgi_pass unix:/run/php/php7.2-fpm.sock;
include fastcgi_params;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_intercept_errors off;
}
location /g/ {
try_files $uri $uri/ /yourls-loader.php$is_args$args;
expires 14d;
add_header Cache-Control 'public';
}
location / {
try_files $uri $uri/ /index.php?$args;
}
# deny access to .htaccess files, if Apache's document root
# concurs with nginx's one
#
location ~ /\.ht {
deny all;
}
}