技术解析

nginx 启用 https , 403 forbidden
0
2021-05-25 11:39:07
idczone

用 letsencrypt 弄了证书,然后准备配置 nginx 。
配置文件如下,然后用 http 正常访问, https 出现 403 。网上爬帖子说权大带宽服务器限问题,或者 index.php 问题。权限什么的应该没有问题啊。添加 index index.php 后,用 https 访问,浏览器直接把我的 index.php 下载下来了。。。
建站新手,很多东西还在学,这个配置也是参照别人的。求解哪里不对了
server
{
listen 80;
#listen [::]:80;
server_name www.forloop.top forloop.top;
index index.html index.htm index.php default.html default.htm default.php;
root /home/wwwroot/www.forloop.top;
include wordpress.conf;
#error_page 404 /404.html;
location ~ [^/].php(/|$)
{
# comment try_files $uri =404; to enable pathinfo
try_files $uri =404;
fastcgi_pass unix:/tmp/php-cgi.sock;
fastcgi_index index.php;
include fastcgi.conf;
#include pathinfo.conf;
}
location ~ ..(gif|jpg|jpeg|png|bmp|swf)$
{
expires 30d;
}
location ~ .
.(js|css)?$
{
expires 12h;
}
access_log off;
}
server{
listen 443;
root /home/wwwroot/www.forloop.top;
server_name www.forloop.top;
ssl on;
ssl_certificate /etc/letsencrypt/live/forloop.top/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/forloop.top/privkey.pem;
}


你这个配置是同时启用 http 和 https 吧,你把 ssl on;注释后重启下 nginx 试试。

注释掉了,还是没有用

你把 http 部分的配置复制一遍,然后改端口,加 ssl 配置就行了
现在的配置,只支持静态文件

你的 ssl 段根本就没启用 php 解析等东西啊……

谢谢,已经可以了。不过有一个新问题,为什么只有首页的锁是绿的?其他的是感叹号呢?

静态资源非 https 你得改内容

不用复制
原来的配置加个 listen 就好了
listen 443 ssl;
新手教程害人不浅, ssl on 都废弃了多久的选项了。。。

看看引用的外部文件是不是 https

懂了,谢谢

确实如你所说,谢谢。配置好了,并且换成了强制跳转 https

非 https 引用可以把链接改成 //开头解决,比如 //a.com/b.js

真能折腾,都用上 Let's Encrypt 了,三个月一更新?

location ~ [^/].php(/|$)
{
comment try_files $uri =404; to enable pathinfo
try_files $uri =404;
fastcgi_pass unix:/tmp/php-cgi.sock;
fastcgi_index index.php;
include fastcgi.conf;
pathinfo.conf;
}
location ~ ..(gif|jpg|jpeg|png|bmp|swf)$
{
expires 30d;
}
location ~ ..(js|css)?$
{
expires 12h;
}
access_log off;
加在后面

http 301 到 https 就绿了,

数据地带为您的网站提供全球顶级IDC资源
在线咨询
专属客服