Laravel 5.5 官方推薦 Nginx 配置學習

Laravel 5.5 版本官方放出了 Nginx 服務器的配置,中文文檔:服務器配置 Nginxphp

server {
    listen 80;
    server_name example.com;
    root /example.com/public;

    add_header X-Frame-Options "SAMEORIGIN";   
    add_header X-XSS-Protection "1; mode=block"; 
    add_header X-Content-Type-Options "nosniff"; 

    index index.html index.htm index.php;

    charset utf-8;

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

    location = /favicon.ico { access_log off; log_not_found off; }  
    location = /robots.txt  { access_log off; log_not_found off; }  

    error_page 404 /index.php;

    location ~ \.php$ {
        fastcgi_split_path_info ^(.+\.php)(/.+)$;
        fastcgi_pass unix:/var/run/php/php7.1-fpm.sock;
        fastcgi_index index.php;
        include fastcgi_params;
    }

    location ~ /\.(?!well-known).* {
        deny all;
    }
}

本身並不擅長 Nginx,相信不少朋友跟我同樣,讓咱們一塊兒學習下 Nginx 的相關知識 : )html

1. add_header X-Frame-Options "SAMEORIGIN";

X-Frame-Options 響應頭是用來給瀏覽器指示容許一個頁面能否在 <frame>, <iframe> 或者 <object> 中展示的標記。網站可使用此功能,來確保本身網站的內容沒有被嵌到別人的網站中去,也從而避免了點擊劫持 (clickjacking) 的攻擊。laravel

X-Frame-Options 有三個值:web

DENY瀏覽器

表示該頁面不容許在 frame 中展現,即使是在相同域名的頁面中嵌套也不容許。

SAMEORIGIN安全

表示該頁面能夠在相同域名頁面的 frame 中展現。

ALLOW-FROM uri服務器

表示該頁面能夠在指定來源的 frame 中展現。

該響應頭設置應該比較常見,以前國外客戶的安全團隊有使用工具掃描咱們項目的相關漏洞,其中就有這個 clickjacking 的問題,最終也是經過該設置來解決此問題。網絡

2. add_header X-XSS-Protection "1; mode=block";

XSS 是跨站腳本攻擊,是比較常見的網絡攻擊手段,改字段指示瀏覽器是否爲當前頁面開啓瀏覽器內建的 XSS 過濾機制。 1 表示容許過濾器,mode=block 指示瀏覽器在檢測到 XSS 攻擊後禁止加載整個頁面。php7

參考文章: 先知XSS挑戰賽 知識點提要工具

3. add_header X-Content-Type-Options "nosniff";

該響應頭設置禁用瀏覽器對 Content-Type 類型進行猜想的行爲。由於不少狀況下服務器並無很好的配置 Content-Type 類型,所以瀏覽器會根據文檔的數據特徵來肯定類型,好比攻擊者可讓本來解析爲圖片的請求被解析爲 JavaScript。

咱們發現以上三個比較常見的防攻擊配置,仍是很是實用的,建議使用,以前咱們的服務器只使用了 add_header X-Frame-Options "SAMEORIGIN"; 配置。

4. 不記錄 favicon.ico 和 robots.txt 日誌

location = /favicon.ico { access_log off; log_not_found off; }
    location = /robots.txt  { access_log off; log_not_found off; }

favicon.ico 網站頭像,默認是瀏覽器標籤頁上網站小圖標以及收藏時顯示的小圖標。

若是未在html header中指定 favicon.ico 那麼瀏覽器默認會去訪問 http://xxx.com/favicon.ico , 不存在此文件的話,那麼會致使404,同時會記錄到 access_log 和 error_log 中。這種記錄到日誌文件中是沒有必要性的,所以能夠取消。

robots.txt 一般是搜索引擎蜘蛛(爬蟲)會去爬取的文件,在行業規範中,蜘蛛去爬取一個網站的時候會首先爬取該文件來獲知網站中哪些目錄文件不須要爬取,在 SEO 中 robots.txt 的正確配置是對 SEO 很是有效果的。該文件也確實沒有必要記錄到日誌中,並且大部分網站並不存在 robots.txt 文件。

以上這些配置是能夠用在大部分的網站上的,不止是 Nginx 服務器,相信 Apache 服務器也有相關的配置,若是你正在用其餘web服務器,以上相似的配置也建議使用。

討論交流

聯繫咱們

相關文章
相關標籤/搜索