
Один есть, один остался! Я полностью понимаю все, что было не так с моей конфигурацией раньше, и хотел бы еще раз поблагодарить Cemal из Stack Overflow. /location/ теперь отображает index.php.
Новая проблема — правила перезаписи. В настоящее время они устанавливаются глобально, и каждое местоположение должно делать то же самое (это дублирующиеся фронтенды PHP, но один из них имеет ограниченный доступ к определенным вещам).
На данный момент основной domain.com работает, но mydomain.com/test загружает основной PHP, но не передает данные из rewrites. Я нашел способ заставить его работать с файлами try, но мне сложно заставить его работать, используя советы regexнайдено здесь.
В нынешнем виде без попыток, следующее приводит к ошибкам, связанным с невозможностью найти raw_data или general_data в nginx, несмотря на то, что эти файлы существуют, поэтому я могу только предположить, что это должны быть правила перезаписи.
Я клонировал существующие правила перезаписи и добавил к ним префикс /test2/, но их все равно не удалось найти.
2018/02/27 13:37:46 [ошибка] 31485#31485: *49483 открыть()
"/var/www/html/test2/general_data" failed (2: No such file or
directory), client: X.X.X.X, server: mydomain.co.uk, request: "POST
/test/weather_data?cell HTTP/1.1", host: "mydomain.co.uk", referrer:
"https://mydomain.co.uk/test2/" 2018/02/27 13:37:46 [error]
31485#31485: *49546 open() "/var/www/html/test/raw_data" failed (2: No
such file or directory), client: X.X.X.X, server: my domain.co.uk,
request: "POST /test/raw_data HTTP/1.1", host: "mydomain.co.uk",
referrer: "https://mydomain.co.uk/test2/"
В любом случае, именно эта ошибка привела меня к такому выводу.
Вот моя текущая конфигурациясоответствующие части-
}server {
rewrite ^/raw_data$ /raw_data.php?$1 last;
rewrite ^/test_data$ /test_data.php?$1 last;
rewrite ^/motd_data$ /motd_data.php?$1 last;
rewrite ^/(.*)map.common.js$ /static/js/map.common.php last;
rewrite ^/general_data$ /general_data.php?$1 last;
rewrite ^test2/raw_data$ /test2/raw_data.php?$1 last;
rewrite ^test2/test_data$ /test2/test_data.php?$1 last;
rewrite ^test2/motd_data$ /test2/motd_data.php?$1 last;
rewrite ^test2/(.*)map.common.js$ /PMSFE/static/js/map.common.php last;
rewrite ^test2/general_data$ /PMSFE/general_data.php?$1 last;
location / {
include /etc/nginx/mime.types;
index index.php index.html index.htm;
location ~ \.php$ {
try_files $uri =404;
fastcgi_pass unix:/run/php/php7.0-fpm.sock;
fastcgi_index index.php;
fastcgi_param HTTP_IF_NONE_MATCH $http_if_none_match;
fastcgi_param HTTP_IF_MODIFIED_SINCE $http_if_modified_since;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
}
location /test2 {
include /etc/nginx/mime.types;
root /var/www/html/;
index index.php index.html index.htm;
location ~ \.php$ {
try_files $uri =404;
fastcgi_pass unix:/run/php/php7.0-fpm.sock;
fastcgi_index index.php;
fastcgi_param HTTP_IF_NONE_MATCH $http_if_none_match;
fastcgi_param HTTP_IF_MODIFIED_SINCE $http_if_modified_since;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
}
Буду очень признателен за любые советы о том, как это можно сделать. Это мой первый опыт использования Linux в целом, не говоря уже о попытке разместить что-то существенное. К сожалению, примеры nginx, которые вы найдете, настолько отличаются, что сложно понять, что применимо к вашей конкретной ситуации, а что нет.
Я попытался включить правила перезаписи в каждое местоположение, как я видел в другом посте, но это сломало страницу mydomain.co.uk с той же ошибкой, что и новая mydomain.co.uk/test2/
решение1
Так глупо с моей стороны. Один / короткий на мои переписывания.
rewrite ^/test2/raw_data$ /test2/raw_data.php?$1 last;
rewrite ^/test2/test_data$ /test2/test_data.php?$1 last;
rewrite ^/test2/motd_data$ /test2/motd_data.php?$1 last;
rewrite ^/test2/(.*)map.common.js$ /PMSFE/static/js/map.common.php last;
rewrite ^/test2/general_data$ /PMSFE/general_data.php?$1 last;
в настоящее время работает!