我在让 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 ...
...
}