Ubuntu

Nginx拒絕IP並設置自定義403下載文件?

  • October 16, 2014

我已經為在 Ubuntu 上執行的預設站點附加了我的 Nginx conf 文件。

我想要達到的目標如下:

  1. 主目錄是/usr/share/nginx/www預設文件index.php
  2. 暫時限制 IP 地址直到發布,所以只有我的 IP 可以查看該站點
  3. 對於嘗試訪問該站點的其他所有人,拒絕他們,但顯示位於主目錄中的自定義403.html403/usr/share/nginx/www頁面

但發生的情況是,當我從不同的 IP 地址(被拒絕訪問的地址)訪問該站點時,它將載入 403.html 頁面但下載一個名為“下載”的文件。如果我訪問 example.com/index.php,它將下載一個 index.php 文件。

有些東西沒有正確配置,但不確定它是什麼。

server {
       listen   80;


       root /usr/share/nginx/www;
       index index.php;

       server_name example.com;

       location / {
               try_files $uri $uri/ /index.php;

               # restrict IP's
               allow 123.456.789.0;
               allow 123.456.789.1;
               deny all;
       }

       location = /403.html {
          root   /usr/share/nginx/www;
          allow all;
       }

       error_page 404 /404.html;
       error_page 403 /403.html;       

       error_page 500 502 503 504 /50x.html;
       location = /50x.html {
             root /usr/share/nginx/www;
            # root /var/www;
       }

       # pass the PHP scripts to FastCGI server listening on the php-fpm socket
       location ~ \.php$ {
               try_files $uri =404;
               fastcgi_pass unix:/var/run/php5-fpm.sock;
               fastcgi_index index.php;
               fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
               include fastcgi_params;

       }

}

您應該將拒絕規則從location /上一級移動,因為現在它們不適用於 php 請求。

server {
       listen   80;


       root /usr/share/nginx/www;
       index index.php;

       server_name example.com;

       allow 123.456.789.0;
       allow 123.456.789.1;
       deny all;

       location / {
               try_files $uri $uri/ /index.php;
       }

       #....

       # pass the PHP scripts to FastCGI server listening on the php-fpm socket
       location ~ \.php$ {
               try_files $uri =404;
               fastcgi_pass unix:/var/run/php5-fpm.sock;
               fastcgi_index index.php;
               fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
               include fastcgi_params;
}

引用自:https://serverfault.com/questions/637378