Правила местоположения Nginx не применяются - PullRequest
0 голосов
/ 28 февраля 2019

Я хочу запустить 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;
	}
}

1 Ответ

0 голосов
/ 28 февраля 2019

Проблема с директивой location / g / try_files заключается в том, что путь к загрузчику YOURLS неверен.Если обработчик URL (yourls-loader.php) находится в каталоге / g, необходимо изменить путь к нему, чтобы включить каталог /g:

try_files $uri $uri/ /g/yourls-loader.php$is_args$args;

.Правило местоположения не подразумевает, что каждый путь также обрабатывается из этого местоположения, а скорее из корневого пути, указанного выше.

...