Nginx Как упростить конфиг

hell0w0rd

Продвинутый новичок
Код:
location / {
    try_files $uri $uri/ @application;
}

location @application {
    rewrite  ^ /app.php last;
}

location ~ \.php$ {
    include        fastcgi_params;
    fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;
    fastcgi_pass   phpfpm;
}
Как избавиться от @application? Хотелось бы чтобы phpfpm вообще обрабатывал только app.php, но дважды указывать не хочется.
Что-то типо такого, но так не работает:

Код:
location / {
    try_files $uri $uri/ @application;
}

location @application {
    fastcgi_index  app.php
    include        fastcgi_params;
    fastcgi_pass   phpfpm;
}
 

grigori

( ͡° ͜ʖ ͡°)
Команда форума
чисто от нефиг делать, или есть какая-то проблема с первым конфигом?
 

hell0w0rd

Продвинутый новичок
@grigori не так - возможность исполнения любого .php файла. Если это убрать
Код:
location /app.php {
...
}
Возникает дублирование, в итоге если я app.php вдруг захочу сменить на index.php или еще какая-то шляпа.php - мне прийдется менять это два раза.
 

MiksIr

miksir@home:~$
Код:
location @application {
    include fastcgi_params;
    fastcgi_param  SCRIPT_FILENAME    $document_root/app.php;
    fastcgi_param  SCRIPT_NAME          /app.php;
    fastcgi_pass ...;
}
 

Redjik

Джедай-мастер
Код:
server {
    listen      80;
    server_name  ~^(?<alias>.*\.|)(?<domain>.*\.dev)$;
   
    set $parsed_server_name $alias$domain;
   
    root /sites/$domain/www/;
На пьяную голову могу сморозить фигню - но ни это ли ты хочешь?
 

fixxxer

К.О.
Партнер клуба
Надо все 404 отправить на app.php, так?

Убираешь локейшен \.php, что в нем было пихаешь в @application вместо реврайта. Вместо include fastcgi_params скопипасть его содержимое в это место. Меняешь везде $fastcgi_script_name на свою переменную, скажем $app_script_name, и ставишь ее значение на уровне server {} в что тебе нужно, скажем set $app_script_name '/app.php'.

Но теперь есть недостаток - запросы вида /script.php будут отдавать исходник. Чтобы этого не было, кладешь весь php-код уровнем выше document_root-а, меняешь в fastcgi-параметрах $document_root / $root на свою переменную (скажем $app_root), и определяешь ее значение - по аналогии с $app_script_name выше.
 
Последнее редактирование:

Absinthe

жожо
Код:
location / {
    try_files $uri /app_dev.php;
    fastcgi_index app_dev.php;
    fastcgi_pass 127.0.0.1:9000;
    include fastcgi_params;
    fastcgi_intercept_errors on;
}
 

hell0w0rd

Продвинутый новичок
fixxxer у меня там только app.php и app_dev.php
И разве заинклудив что-то ниже это нельзя перезаписать? или nginx-конфиги не так работают?
 
Сверху