在Nginx上为CDN启用/禁用PHP
我有一台安装了Nginx的服务器。在Nginx上为CDN启用/禁用PHP,nginx,web,cdn,Nginx,Web,Cdn,我有一台安装了Nginx的服务器。 我还有两个指向该服务器的域。(域名1.com和域名2.com)。第一个域(domain1.com)是前端网站。另一个域(domain2.com)是静态内容的CDN,如:JS、CSS、图像和字体文件 我设置了域配置文件,一切正常。nginx服务器上运行着PHP 我的问题是:如何在第二个域(domain2.com)上禁用PHP,除非请求的GET请求中有“?param=something” 它将类似于: // PHP is disabled if($_GET['pa
我还有两个指向该服务器的域。(域名1.com和域名2.com)。第一个域(domain1.com)是前端网站。另一个域(domain2.com)是静态内容的CDN,如:JS、CSS、图像和字体文件 我设置了域配置文件,一切正常。nginx服务器上运行着PHP 我的问题是:如何在第二个域(domain2.com)上禁用PHP,除非请求的GET请求中有“?param=something”
它将类似于:
// PHP is disabled
if($_GET['param']){
// Enable PHP
}
或者我应该使用:
location ~ /something {
deny all
}
让PHP继续运行
注意:我需要php处理我传递的参数以输出一些JS或CSS。使用nginx的php与使用Apache的php非常不同,因为nginx没有mod_php等价物(AFAIK) PHP是由完全独立的守护进程(PHP fpm,或通过将请求传递给apache服务器等)处理的。因此,只需让nginx处理请求而不将其传递给PHP fpm或apache,就可以完全绕过PHP。很有可能您的nginx配置已经设置为只将.php文件切换到php fpm 现在,如果您试图让php处理/some style.css?foo=bar之类的请求,那么我建议您简单地将静态资源与动态资源分离 您可以创建第三个域,或者简单地使用两个单独的目录
/static/foo.css
vs
然后可以在位置块内切换到php
location ~ /static {
try_files $uri =404;
}
location ~ /dynamic {
try_files $uri =404;
include /etc/nginx/fastcgi_params;
fastcgi_pass 127.0.0.1:9000;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
}
在上述配置中,以/static开头的请求将绕过php,而不管文件扩展名是什么(偶数.php),以/dynamic开头的请求将在php fpm上传递,而不管文件扩展名是什么(偶数.css)
location ~ /static {
try_files $uri =404;
}
location ~ /dynamic {
try_files $uri =404;
include /etc/nginx/fastcgi_params;
fastcgi_pass 127.0.0.1:9000;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
}