如何在nginx位置提供html / php



Heyo,前端人员将网站从共享主机移动到SPA液滴。我在/build 中有一个无头 CMS,在/mail 中有一个 Node SendGrid Mailserver,并且正在尝试在/wp-content/themes/webdev/projects/trackjob/point_card/中使用一些 html 和 php。(这是一个PHP代理(原因是一个老客户从我的旧网站使用iframe到这个网址,最好把它复制过来。

card_api_js_v2.html需要向同一父目录中的 php 文件发出 AJAX 请求。

我只是越来越熟悉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;
}

您对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(和$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(显然不会找到(。这是rootaliasnginx指令之间的主要区别。您的位置块应该是

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;
}
}

为了实际运行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;
}

最新更新