php - 如何在 nginx 位置提供 html/php
问题描述
嘿,前端人员将网站从共享主机转移到 SPA droplet。我在 /build 中有一个 Headless CMS,在 /mail 中有一个 Node SendGrid Mailserver,并且我试图在 /wp-content/themes/webdev/projects/trackjob/point_card/ 中有一些 html 和 php。(它是一个 php 代理) 原因是一个旧客户端从我的旧站点使用 iframe 到这个 url,最好将它复制过来。
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
(显然不会找到)。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;
}
}
推荐阅读
- python - Ubuntu16无法安装pyheif
- google-apps-script - 如何将文本框值从应用程序发明者转移到谷歌表格网络应用程序
- java - 调试:如何删除字符串中连续出现的字符?
- tableau-api - 在 Tableau Desktop 中加入两个工作表以制作一个
- c++ - C++ 条件变量与向量化的新线程
- c - 在 C 中将 int64_t 转换为字符串
- python-3.x - 无法在 Pypandoc 中读取文件
- javascript - 标题和主菜单覆盖内容如何修复?
- python - 用python从类中绘制树形图的简单方法?
- javascript - 完成后上传任务getDownloadUrl()