nginx之location部署yii项目(不使用nginx端口转发)

aolishuai 2019-10-30

  1. 前言: 之前部署yii项目的时候, 使用的是域名, 后来使用nginx进行端口转发(反向代理)来部署yii项目. 这一次部署尝试只使用location 进行部署(不需要使用端口).
  2. 先贴出nginx的配置nginx之location部署yii项目(不使用nginx端口转发)
  3. 正题: 首先yii项目本地能够跑通, 在部署的时候, 遇到问题一定多去查看日志(主要是nginx的访问日志和错误日志). 在本次部署的时候, 遇到的问题是项目的样式没有出来, 项目样式没有出来  (1)可能是路径不对, (2) 静态资源没有访问权限, 我查看nginx访问日志
    nginx之location部署yii项目(不使用nginx端口转发)

    发现请求这个静态资源的时候, 报了403 错误. 查看错误日志
    nginx之location部署yii项目(不使用nginx端口转发)

    发现denied, 看划线的一行, 说明静态资源的后缀被限制访问了,  应该是可以通过修改php.ini的 security.limit_extensions 可以解决(没试过!应该可以), 我使用的解决方案是配置一个location 正则匹配静态资源, 这样就解决问题了.配置如下图
    nginx之location部署yii项目(不使用nginx端口转发)

    问题解决!!!!~~~~~成功访问
  4. 将截图的代码赋值下来
    #通过 location 匹配yii项目配置如下
    location /quick-mould/ {
       root /home/php_project;
       fastcgi_pass 127.0.0.1:9000;
       fastcgi_index index.php;
       fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
       include fastcgi_params;  
    }
    
    
    #上面的可以访问PHP脚本了, 但是项目里的静态资源访问不到, 所以需要再配置一个location, 并且要注意 红色部分不要有空格, 否则有语法错误
    location ~* /quick-mould/.*\.(gif|jpg|jpeg|bmp|png|ico|txt|js|css)$ {
        root /home/php_project;  # 当请求/quick-mould目录下的静态资源的时候, 才会匹配到这个location, 访问其他目录下的不会匹配  
    }
  5. 项目部署其他的注意事项参考https://www.cnblogs.com/bneglect/p/11511647.html
  6. 根据访问路径匹配不同目录下的静态资源 配置请参考: https://segmentfault.com/q/1010000009158836

相关推荐