服务器部署网站后,公网ip可以访问,域名不能访问问题(稳)

出现问题

    这几天我网站已经部署到vps上,域名也备好案,想使用域名指向我们公网ip。指完发现用域名访问不了网站,但是公网ip可以。于是看了网上资料,好像是要清除浏览器DNS缓存,我清完没用。然后发现我的域名是https的,查了查,好像是没有在服务器上安装SSL证书,导致我用域名访问不了。最后真是这个原因

解决

  • 去腾讯云申请一个免费的一年SSL证书,但是每隔一年都得重新免费申请。点击这里跳转到腾讯云SSL证书
    在这里插入图片描述
  • 之后的照着填就是了。。然后应该会等待一两天(他们是打电话给我)就申请好。
  • 申请好之后就这样,点击下载。
    在这里插入图片描述
  • 下载完解压,出现下面的文件
    在这里插入图片描述
  • 选择一个你在服务器上用的,我的是Nginx。
  • 下面需要使用工具Putty连接服务器和WinSCP远程传输文件来解决。其实单独用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端口,这是新创建的443端口,配置SSL的,但是两者共存时,80端口的站点需要强制跳转为htpps的站点(443端口的),待会会讲。
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配置跟你站点的配置放在一个文件。

如果80端口和443端口两个配置文件同时生效的问题

有可能在访问80端口,也就是http时有时会有点错误,所以在80端口的配置文件的server中,加上一句:当访问把http转为https

    return 301 https://$server_name$request_uri;

配完还是有可能出现的问题

  • 也就是将配置文件的root指向我们的站点目录后。我们尝试用域名访问,发现出现下面问题。
    在这里插入图片描述
  • 这是权限文件,无权访问你的站点。我检查了我的站点目录权限,都是git:git,正常。,最后发现是在nginx目录下的全局配置文件nginx.conf中。
    在这里插入图片描述
  • user配的是nginx,导致没有权限,修改成root。
    在这里插入图片描述
  • 在重启 nginx(nginx -s reload)就可以访问了。

解决得了记得点个赞哦

猜你喜欢

转载自www.cnblogs.com/flunggg/p/12184643.html