我的伺服器環境是 CentOS 7,Nginx 版本是 1.12,簡單紀錄一下讓 Laravel 在 Nginx 運作的設定。

編輯 Nginx 的設定檔案,通常路徑是

/etc/nginx/conf.d/default.conf

# 如果要強制轉 https 加這段
    if ($scheme != "https") {
        rewrite ^ https://$http_host$request_uri? permanent;
    }

# Laravel 的根目錄要設到 public
    location / {
        root /var/www/html/public;
        try_files $uri public/$uri/ /public/index.php?$query_string;
    }

# PHP 的相關設定
    location @php {
        try_files $uri =404;
        include /etc/nginx/fastcgi_params;
        fastcgi_pass unix:/var/lib/php5-fpm/web19.sock;
        fastcgi_index index.php;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
        fastcgi_intercept_errors on;
    }

這樣就可以正常運作囉,重整看看不是能看到 Laravel 的首頁

laravel index

補充兩個常用的設定,防圖片盜連跟轉維護中畫面


# 防圖片盜連,xxxxx.com 記得換成你的網址
    location ~* \.(png|jpg|jpeg)$ {
            valid_referers *.xxxxxx.com;
            if ($invalid_referer) {
                return   403;
            }
    }

# 全站轉維護中,一樣記得 root 的網址要換掉喔
    set $maintenance on;
    if ($uri ~* \.(ico|css|js|gif|jpe?g|png|html)(\?[0-9]+)? ) {
        set $maintenance off;
    }
    if ($maintenance = on) {
        return 503;
    }
    error_page 503 @maintenance;
    root /srv/example_com/current/public;
    location @maintenance {
            rewrite ^(.*)$ /maintenance.html break;
    }