Laravel 5 / Forge 和 nginx,尝试设置站点范围的 HTTPS

Laravel 5 / Forge 和 nginx,尝试设置站点范围的 HTTPS

我在让 nginx 将 http:// 流量重写为 https:// 时遇到问题。我在任何 http:// 流量上都收到 nginx 404 错误页面。

我是 nginx 新手,但我认为我应该编辑 sites-available 文件夹下的“默认”文件?

经过进一步检查,似乎 404 是从 catch-all 文件中加载的

server {
listen 80;
listen [::]:80;
listen 443 default ssl;

server_name default;
root /home/forge/default/public;

# FORGE SSL (DO NOT REMOVE!)
ssl_certificate /etc/nginx/ssl/default/12979/server.crt;
ssl_certificate_key /etc/nginx/ssl/default/12979/server.key;

ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
if ($ssl_protocol = "") {
    rewrite ^       https://oakjar.com/$request_uri? permanent;
}

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; }

access_log off;
error_log  /var/log/nginx/default-error.log error;

error_page 404 /index.php;

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

location ~ /\.ht {
    deny all;
}

答案1

为您的虚拟主机创建一个新文件。

创建 2 个服务器块 - 1 个块用于处理端口 80 以重定向到 443,1 个块用于端口 443 下的常规配置。

server {
    listen       80;
    server_name  _;
    return       301 http://$host$request_uri;
}
server {
    listen       443;
    server_name  _;

    # the usual ...
    ...
}

相关内容