部署采坑汇总
http站点部署相关问题 server { listen 80; server_name 你的域名; # 没有可以写_,或者写ip,或者把这一行删掉,那你就只能通过ip访问

部署采坑汇总

发布时间:2023-11-26 (2023-11-26)

http站点部署相关问题

server {
    listen   80;
    server_name 你的域名;  # 没有可以写_,或者写ip,或者把这一行删掉,那你就只能通过ip访问
    location / {
      try_files $uri $uri/ /index.html;  # 解决刷新404问题,单文件应用部署必须要这个
      root   /你的index.html文件所在的目录;
      index  index.html index.htm;
    }
}

nginx部署前端项目最核心的部分就这么一点点

如果用域名的话,你要在你的域名控制台,新加一条A记录,将域名映射到你的公网ip地址上

然后,你的服务器,要开放对应的端口,可能要开两次,服务器本身一次,云厂商安全设置一次

如果有反向代理,那就匹配对应的路径,代理到后端的某个地址

例如

location /api/ {
  proxy_set_header Host $host;
  proxy_set_header X-Real-IP $remote_addr;
  proxy_set_header REMOTE-HOST $remote_addr;
  proxy_pass http://127.0.0.1:8080/api/;  # 代理到后端地址上,注意最后面的/,加与不加还是有区别的,自己多试试就知道了,看下我专门将nginx的那个视频就好了
}

然后你访问的时候,就不要访问后端地址了,而是访问nginx代理的端口地址

然后就是代理后端的静态文件,这个写法也是固定的

 location /uploads/ {
  alias /www/wwwroot/gvb/gvb_server/uploads/;  # 注意最后面的/,这个是必须的,这里会有权限问题,要么nginx用root权限跑,要么设置目录的权限和nginx运行用户的权限一致
}

最重要的一点

访问达不到你的预期,400问题,就去看nginx的错误日志

错误日志没有就看请求日志

页面没问题,数据出不来,就看后端的日志

一点要学会看日志

课程示例的index.html

<!DOCTYPE html><html lang="zh-CN"><head><meta charset="UTF-8"><title>枫枫知道</title><style>body{margin:0;display:flex;justify-content:center;align-items:center;height:100vh}*{box-sizing:border-box}#box{color:#555}#box a{color:#1a54d2;text-decoration:none}</style></head><body><div id="box">枫枫你好,欢迎来到<a href="https://www.fengfengzhidao.com/"target="_blank">枫枫知道</a></div></body></html>

https部署

首先,ssl证书可以免费获取,每个云平台都有

我知道的,宝塔,七牛,腾讯云都是有的

如果你的网站本来就是跑在宝塔里面的,那就直接用宝塔那个就行了,傻瓜式操作就好了

一般的免费ssl证书,证书是跟着域名走的,一个域名一个ssl证书

ssl相关配置就是

server {
    listen       443 ssl;
    server_name  你的域名;
    ssl_certificate    签名证书的路径;
    ssl_certificate_key   私钥的路径;   # 一般名字后面有个key

    location / {
      try_files $uri $uri/ /index.html;  
      root   你的index所在的目录;
      index  index.html index.htm;
    }
}

七牛云ssl配置

演示一下,七牛云的ssl配置吧

其他云平台都是大同小异的

https://portal.qiniu.com/certificate/apply

反正找到价格为0的这个证书就行

然后补全相关信息就好了

公司信息,和联系人信息,随便写,格式如下

然后去配置CNME

然后点击验证域名,应该马上就可以了,然后订单状态是已签发

然后点击查看证书,下载证书,证书格式选择nginx的

解压之后,一个pem文件,一个key文件

然后改下nginx配置文件,例如

还有一个问题需要注意,证书的私钥文件不能被前端访问到,这里我就忽略这个问题了

server {
    listen       443 ssl;
    server_name  test.fengfengzhidao.com;
    ssl_certificate    /opt/test/test.fengfengzhidao.com_cert_chain.pem; 
    ssl_certificate_key   /opt/test/test.fengfengzhidao.com_key.key; 

    location / {
      try_files $uri $uri/ /index.html;  
      root   /opt/test/;
      index  index.html index.htm;
    }
}

然后重启nginx

nginx -t # 先用这个命令看看自己配置有没有写错
nginx -s reload

然后访问页面就可以了

然后,如果访问http的话,可以设置一个重定向

server {
    listen   80;
    server_name test.fengfengzhidao.com;
    location / {
         rewrite ^(.*)$  https://test.fengfengzhidao.com;
    }
}