Выполнение php-скриптов в конфигурации nginx

0

У меня есть следующий серверный блок nginx в его конфигурации

server {
    listen       80;
    server_name mydomain.com;
    location /deploy {
        alias /home/somedir/deploy/;
        }

    # pass the PHP scripts to FastCGI server listening on /var/run/php5-fpm.sock
    location ~ \.php$ {
            try_files $uri =404;
            fastcgi_pass unix:/var/run/php5-fpm.sock;
            fastcgi_index index.php;
            fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
            include fastcgi_params;

    }
  }

Я хочу выполнить php файл на url mydomain.com/deploy/erp/index.php или mydomain.com/deploy/erp

Вышеупомянутая вещь загружает файл php вместо его выполнения. Я googled и нашел решения, которые требуют, чтобы вы определили каталог www или что-то еще. Мне просто нужно выполнить файл в определенном каталоге по определенному URL-адресу. Какие у меня варианты?

Показать ещё 1 комментарий
Теги:
nginx

1 ответ

0

Вы не сказали nginx, что делать с файлами.php. Предполагая, что вы используете php-fpm, вам понадобится что-то вроде этого:

server {
  listen       80;
  server_name mydomain.com;

  root /home/somedir;

  location / {
    try_files $uri $uri/ =404;
  }

  location /deploy {
    try_files $uri $uri/ /index.php?$args;
  }

  location ~ \.php$ {
    try_files $uri =404;
    fastcgi_index index.php;
    fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
    fastcgi_pass 127.0.0.1:9000;
    include fastcgi_params;
  }
}
  • 0
    это работает, но с небольшими изменениями. Ваш код на самом деле будет работать на версиях Ubuntu 12.xx и ниже. Над этим вам нужно передать unix: /var/run/php5-fpm.sock вместо 127.0.0.1:9000
  • 0
    Большой! Это зависит от ваших настроек fpm (например, /etc/php/fpm/php-fpm.conf) - вы можете выбрать сокет TCP или unix (см. Github.com/php/php-src/blob/… )

Ещё вопросы

Сообщество Overcoder
Наверх
Меню