NGINX导致index.php在应用访问列表时被下载

我试图限制访问某个pipe理页面。 然而,我有我的nginx.conf中的以下configuration:

server { listen 80; ## listen for ipv4; this line is default and implied root /var/www; server_name asdf; location / { proxy_pass http://192.168.1.1:88/; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; } #location /server/administrator/ { # allow 127.0.0.0/24; # allow my.ip/32; #} } 

一切工作与这个configuration,请求传递给我的apache2监听端口88.但是,当我从我的访问限制删除评论,我的index.php正在下载,而不是处理。 也许有人看过这个?

如果您的管理页面位于192.168.1.1后端,则您的位置块需要如下所示

 location /server/administrator/ { proxy_pass http://192.168.1.1:88; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; allow 127.0.0.0/24; allow my.ip/32; deny all; } 

除了允许的两个外,你想拒绝所有的,你需要告诉nginx,在哪里代理你的请求到特定的位置

编辑:

如果管理页面在您的nginx框中,并且您希望执行它,则需要运行fastcgi或php-fpm。 与Apache不同,nginx本身并不提供php或其他服务器端脚本,但它可以使用fastcgi_pass而不是proxy_pass与fastcgi类的后端对话。

看看这个了解如何使用php-fpm运行nginx

http://www.lifelinux.com/how-to-install-nginx-and-php-fpm-on-centos-6-via-yum/

您的第一个位置正在传递给Apache,但第二个位置由NginX处理,NginX不知道PHP是什么,因此可以将其作为二进制文件下载。

您可以通过检查NginX提供的X-REAL-IP头来简单地在server/administrator/index.php设置访问控制。

 if ($_SERVER["HTTP_X_REAL_IP"] != 'my IP') { if (false === strpos($_SERVER["HTTP_X_REAL_IP"], '127.0.0.')) { // 302 redirect to home Header("Location: http://yoursite/"); die("Access denied"); } } 
 server { listen 80; location / { proxy_pass http://192.168.1.1:88; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; location /server/administrator/ { allow 127.0.0.0/24; allow my.ip/32; proxy_pass http://192.168.1.1:88; } } } 

您忘记了新位置的proxy_pass

看到: