Как обслуживать html / php в nginx месте - PullRequest
0 голосов
/ 21 июня 2020

Эй, фронтенд-парень переносит веб-сайт с общего хостинга на каплю SPA. У меня есть безголовая CMS в / build, почтовый сервер Node SendGrid в / mail, и я пытаюсь разместить некоторые html и php в / wp-content / themes / webdev / projects / trackjob / point_card /. (это прокси php) Причина в том, что старый клиент использовал iframe для этого URL с моего старого сайта, и лучше всего скопировать его.

card_api_js_v2. html нужно будет сделать AJAX запрос к файлу php в том же родительском каталоге.

Я только знакомлюсь с nginx. Совет?

На данный момент у меня есть такой ...

location / {
   root /var/www/build;
   try_files $uri $uri/ /;
}

location /mail {
   root /var/www/server;
   proxy_pass http://localhost:3000;
   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;
}

// DOESNT WORK ??? 
location /wp-content/themes/webdev/projects/trackjob/point_card/ {
   root /var/www/wp-content/themes/webdev/projects/trackjob/point_card;  
   try_files $uri $uri/ /card_api_js_v2.html;
}

Ответы [ 2 ]

2 голосов
/ 22 июня 2020

Вы неправильно понимаете, как работает директива root. Когда вы используете этот блок местоположения

location /wp-content/themes/webdev/projects/trackjob/point_card/ {
   root /var/www/wp-content/themes/webdev/projects/trackjob/point_card;
   try_files $uri $uri/ /card_api_js_v2.html;
}

и получаете входящий запрос /wp-content/themes/webdev/projects/trackjob/point_card/card_api_js_v2.html, nginx объединяет $ document_ root (что составляет /var/www/wp-content/themes/webdev/projects/trackjob/point_card) и * 1009. * $ uri (то есть /wp-content/themes/webdev/projects/trackjob/point_card/card_api_js_v2.html) и ищет файл /var/www/wp-content/themes/webdev/projects/trackjob/point_card/wp-content/themes/webdev/projects/trackjob/point_card/card_api_js_v2.html (который, очевидно, не будет найден). Это основное различие между директивами root и alias nginx. Вместо этого ваш блок местоположения должен быть

location /wp-content/themes/webdev/projects/trackjob/point_card/ {
   root /var/www;  
   try_files $uri $uri/ /wp-content/themes/webdev/projects/trackjob/point_card/card_api_js_v2.html;
}

.

Обновление

Если вам нужно обслуживать сценарии PHP внутри этого местоположения, измените его на

location ^~ /wp-content/themes/webdev/projects/trackjob/point_card/ {
   root /var/www;  
   try_files $uri $uri/ /wp-content/themes/webdev/projects/trackjob/point_card/card_api_js_v2.html;
   location ~ \.php$ {
      include fastcgi.conf;
      fastcgi_param SCRIPT_FILENAME $request_filename;
      # if your php-fpm listens to the UNIX socket (assuming default socket path)
      # fastcgi_pass unix:/var/run/php/php7.4-fpm.sock
      # if your php-fpm listens to the TCP/IP port (assuming default port)
      # fastcgi_pass 127.0.0.1:9000;
   }
}
1 голос
/ 21 июня 2020

Чтобы фактически запустить файлы PHP (а не отправлять их содержимое в виде текста в браузер), вам нужно будет использовать PHP -FPM:

        location ~ \.php(/|$) {
            try_files $uri =444;

            fastcgi_param  QUERY_STRING       $query_string;
            fastcgi_param  REQUEST_METHOD     $request_method;
            fastcgi_param  CONTENT_TYPE       $content_type;
            fastcgi_param  CONTENT_LENGTH     $content_length;
 
            fastcgi_param  SCRIPT_NAME        $fastcgi_script_name;
            fastcgi_param  SCRIPT_FILENAME    $document_root$fastcgi_script_name;
            fastcgi_param  PATH_INFO          $fastcgi_path_info;
            fastcgi_param  HTTPS              $https;
            fastcgi_param  REQUEST_URI        $request_uri;
            fastcgi_param  DOCUMENT_URI       $document_uri;
            fastcgi_param  DOCUMENT_ROOT      $document_root;
            fastcgi_param  SERVER_PROTOCOL    $server_protocol;
 
            fastcgi_param  GATEWAY_INTERFACE  CGI/1.1;
            fastcgi_param  SERVER_SOFTWARE    custom;
 
            fastcgi_param  REMOTE_ADDR        $remote_addr;
            fastcgi_param  REMOTE_PORT        $remote_port;
            fastcgi_param  SERVER_ADDR        $server_addr;
            fastcgi_param  SERVER_PORT        $server_port;
            fastcgi_param  SERVER_NAME        $server_name;

            fastcgi_pass 127.0.0.1:9000;
            fastcgi_connect_timeout 120;
            fastcgi_send_timeout 600;
            fastcgi_read_timeout 600;
            fastcgi_buffering off;
            fastcgi_request_buffering off;
            fastcgi_buffers 8 128k;
            fastcgi_buffer_size 128k;
            fastcgi_busy_buffers_size 256k;
            fastcgi_temp_file_write_size 256k;
            fastcgi_intercept_errors on;
            fastcgi_ignore_client_abort off;
        }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...