当前位置: 首页 > 知识库问答 >
问题:

Nginx和FastCG在不同服务器上出现相同的文件问题

宗沛
2023-03-14

在将NGINX Plus与FastCGi(PHP-FPM)一起使用时,问题是我们需要在NGINX Plus和FastCGi服务器上都有相同的文件集。

这是我的配置示例:-

机器1:Nginx Plus机器2:FastCGI(PHP-FPM)

我的Nginx配置:

server {
    listen   80;
    server_name  kp.in;
    root /var/example/;

location ~ \.php$ {
        try_files $uri =404;
        fastcgi_pass   172.16.38.179:9000;
        fastcgi_index  index.php;
        ........ 
        ........
 }

我在NGINX和FastCGI服务器的/var/example/(documentroot)中都有一个简单的“hello.php”文件。如果我删除hello。php从NGINX文档根,然后在浏览器中,NGINX说找不到404。

这方面有什么办法吗?理想情况下,我希望将所有PHP文件保存到FastCGi(PHP-FPM)服务器本身,而不是保存在多个服务器中。

共有1个答案

袁鹤轩
2023-03-14

nginxphp-fpm的通用实现将两个服务放在同一个文件系统中的同一个服务器上。避免将不受控制的请求传递给PHP的一种常见技术是向PHP位置块添加try\u files指令。

try_files的目的是确保文件在将其名称传递给本地PHP解释器之前存在于本地文件系统中。

如果解释器不是本地的,则应采用其他技术来避免向上游发送格式错误的文件名,例如fastcgi_split_path_info

在您的特定情况下,\. php$regex不接受路径信息,因此不容易受到路径信息攻击。只需删除try_files$uri=404;行从您的位置~\. php$容器。您也可以丢失fastcgi_index,因为容器也看不到裸目录。

location ~ \.php$ {
    fastcgi_pass  172.16.38.179:9000;
    ...
}
 类似资料:
  • 问题内容: 我的网站托管在不同位置的多台服务器上 到处数据格式的文化都不尽相同- 我们在每个地方都使用格式,但如果某些服务器设置了文化,则我们的网站将生成Datetime异常。 问题答案: 您应该在将字符串转换为日期时指定要使用的区域性。 您应该使用的区域性取决于日期格式的区域性。例如,如果您要解析的所有日期都被格式化为 Slovak : 然后,您需要像在 斯洛伐克(Slovakia) ()文化中

  • 本文向大家介绍Nginx实现不同域名输出不同的服务器头信息方法,包括了Nginx实现不同域名输出不同的服务器头信息方法的使用技巧和注意事项,需要的朋友参考一下 大家或许会有这种奇葩的需求... 要是同一台主机上, 需要针对不同的域名输出不同的Server头, 怎么实现呢? 我们需要用到ngx_headers_more模块 像上面这样, 我们就可以来实现这功能了. 但这样靠谱吗? 靠谱, 但是不满足

  • 我在生产服务器上安装SSL时遇到问题。我在端口80上运行Laravel,在端口8080上运行vue js。我已经安装了SSL证书。 但是现在当我试图发送任何请求到8000a时有一个错误: XHR.js:178混合内容:“HTTPS://www.example.com/login”页面是通过HTTPS加载的,但请求的XMLHttpRequestendpoint“http://www.example.

  • 我想将setlocale与“es_es”一起使用。它返回false,但其他语言(如“de_de”)工作正常。 所以我在服务器上检查了“locale-a”(Red Hat 4.4.6-4)。它在名单上。当我在PHP中使用以下代码时,它不在列表中: 它返回不同的结果然后服务器。任何想法,如何添加es在PHP中使用语言环境? 我正在使用Apache2.2。15

  • 我在我的网站上使用蒙特塞拉特字体。我通常使用这里提供的谷歌字体。它只有两种样式:和。 我最近发现在font Squirrel上还有另外两种字体:和。我也需要这两个,因为它们不在Google Fonts上,我想从Font Squirrel下载它们,然后使用他们的webfont生成器。 不过,我注意到,同样的字体,同样的样式和重量,看起来略有不同。下面是对比粗体版的截图: 上面的是一个来自Font S

  • 目前,我正在使用SonarQube插件将SonarQube与Jenkins集成。我面临的问题是我的Jenkins与Sonarqube运行在不同的服务器上。因此,当我传递sonar.source属性(如)时,由于服务器位置不同,无法找到由Jenkins创建的回购的Jenkins工作区 我的项目是Maven。以下是声纳属性的详细信息: p.s-当Jenkins和SonarQube都在同一台服务器上时,