lazy_den
@lazy_den
Студент, Yii разработчик

Как правильно сконфигурировать nginx?

Здравствуйте!
Есть localhost, мне нужно чтобы на location / был proxy_pass http://web:80;
Это сделать несложно
а на location /api
нужно запускать php-fpm
что то такое:
location /api/ {
           try_files $uri =404;
           fastcgi_split_path_info ^(.+\.php)(/.+)$;
           fastcgi_pass api:9000;
           fastcgi_index index.php;
           include fastcgi_params;
           fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
           fastcgi_param PATH_INFO $fastcgi_path_info;
       }


Как правильно прописать location для php?

Если location /api/~ \.php$ {
То получаю ошибку с неправильным путем.
Ведет на /app/src/api/index.php"
А нужно на /app/src/index.php"

Что изменить чтобы заработало?
server {
       listen 80 default_server;

       server_name localhost;


       error_log  /var/log/nginx/error.log;
       access_log /var/log/nginx/access.log;


       location / {
           proxy_pass http://web:80;
           proxy_http_version 1.1;
           proxy_set_header Upgrade $http_upgrade;
           proxy_set_header Connection 'upgrade';
           proxy_set_header Host $host;
           proxy_cache_bypass $http_upgrade;
           break;
       }

       location /api/~\.php$ {
           alias /app/src;
           try_files $uri =404;
           fastcgi_split_path_info ^(.+\.php)(/.+)$;
           fastcgi_pass api:9000;
           fastcgi_index index.php;
           include fastcgi_params;
           fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
           fastcgi_param PATH_INFO $fastcgi_path_info;
       }
   }
  • Вопрос задан
  • 981 просмотр
Решения вопроса 1
lazy_den
@lazy_den Автор вопроса
Студент, Yii разработчик
Получал
FastCGI sent in stderr: "Primary script unknown" while reading response header from upstream

Пришлось просто вручную прописать SCRIPT_FILENAME
Вот итоговый конфиг
server {
       listen 80 default_server;

       server_name localhost;
       root /app/src;

       error_log  /var/log/nginx/error.log;
       access_log /var/log/nginx/access.log;

       location /api {
           root /app/src;
           index index.php index.html index.htm;
           try_files  $uri /api/index.php$is_args$args;

           location  ~ \.php$ {

                 fastcgi_pass api:9000;
                 include fastcgi_params;
                 fastcgi_split_path_info ^(?:\/api\/)(.+\.php)(.*)$;
                 fastcgi_index index.php;
                 fastcgi_param SCRIPT_FILENAME /app/src/index.php;
             }
       }

       location / {
                  proxy_pass http://web:80;
                  proxy_http_version 1.1;
                  proxy_set_header Upgrade $http_upgrade;
                  proxy_set_header Connection 'upgrade';
                  proxy_set_header Host $host;
                  proxy_cache_bypass $http_upgrade;
                  break;
              }
   }
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы