服务器部署网站后,公网ip可以访问,域名不能访问问题(稳)
程序员文章站
2022-07-15 16:04:42
...
出现问题
这几天我网站已经部署到vps上,域名也备好案,想使用域名指向我们公网ip。指完发现用域名访问不了网站,但是公网ip可以。于是看了网上资料,好像是要清除浏览器DNS缓存,我清完没用。然后发现我的域名是https的,查了查,好像是没有在服务器上安装SSL证书,导致我用域名访问不了。最后真是这个原因
解决
- 去腾讯云申请一个免费的一年SSL证书,但是每隔一年都得重新免费申请。点击这里跳转到腾讯云SSL证书
- 之后的照着填就是了。。然后应该会等待一两天(他们是打电话给我)就申请好。
- 申请好之后就这样,点击下载。
- 下载完解压,出现下面的文件
- 选择一个你在服务器上用的,我的是Nginx。
- 下面需要使用工具Putty连接服务器和WinSCP远程传输文件来解决。其实单独用WinSCP来解决也可以。
- 如何用Putty连接请看入门连接Putty
- WinSCP下载点击这里
- 先使用WinSCP把刚刚解压的Nginx文件中的两个1_flunggg.cn_bundle.crt和2_flunggg.cn.key文件传输到你在服务器的nginx的conf目录下。我自己是安装在/etc/nginx下(在CentOS7安装Nginx),但是没有conf目录,所以我自己新创建conf目录,如下指令。把两个文件从本地用WinSCP拉过去。然后在此目录新创建一个文件
mkdir /etc/nginx/conf
vi myblog.conf
- 在 myblog.conf中加上(由于版本问题,配置文件可能存在不同的写法。例如:使用 listen 443 ssl 代替 listen 443 和 ssl on。),记得把下面的ssl_certificate和ssl_certificate_key改成刚刚拉进来的两个文件名(因为原先默认会自动定位到/etc/nginx/, 所以nginx -t时错误找不到两个文件,所以的配置 /conf/xxx,这个看个人nginx版本情况),还有server_name。此外不要跟原先站点配置的文件.conf,那个80端口的混了,这是新创建的,配置SSL的,跟原来配置站点那个不同,不要覆盖了。
server {
#SSL 访问端口号为 443
listen 443 ssl;
#填写绑定证书的域名
server_name www.flunggg.cn flunggg.cn;
#证书文件名称
ssl_certificate conf/1_flunggg.cn_bundle.crt;
#私钥文件名称
ssl_certificate_key conf/2_flunggg.cn.key;
ssl_session_timeout 5m;
#请按照以下协议配置
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
#请按照以下套件配置,配置加密套件,写法遵循 openssl 标准。
ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:HIGH:!aNULL:!MD5:!RC4:!DHE;
ssl_prefer_server_ciphers on;
location / {
#网站主页路径。此路径仅供参考,具体请您按照实际目录操作。
root /usr/share/nginx/html;
index index.html index.htm;
}
}
- 然后在主配置中(nginx.conf)的http下添加如下代码,然后测试一下,成功了就使用重启nginx
# 使得刚刚配置的SSL生效
include /etc/nginx/conf/*.conf;
#测试
nginx -t
# 重启
nginx -s reload
- 这时再访问域名就可以访问了。上面只是我的配置,你也可以把SSL配置跟你站点的配置放在一个文件。
配完还是有可能出现的问题
- 也就是将配置文件的root指向我们的站点目录后。我们尝试用域名访问,发现出现下面问题
- 这是权限文件,无权访问你的站点。我检查了我的站点目录权限,都是git:git,正常,最后发现是在nginx目录下的全局配置文件nginx.conf中
- user配的是nginx,导致没有权限,修改成root
- 在重启 nginx(nginx -s reload)就可以访问了
解决得了记得点个赞哦