hyperf配置静态资源后,nginx反向代理404解决

配置静态资源

如果您希望通过 http 访问上传到本地的文件,请在 config/autoload/server.php 配置中增加以下配置。

return [
    'settings' => [
        ...
        // 将 public 替换为上传目录
        'document_root' => BASE_PATH . '/public',
        'enable_static_handler' => true,
    ],
];


Nginx 反向代理

# 至少需要一个 Hyperf 节点,多个配置多行
upstream hyperf {
    # Hyperf HTTP Server 的 IP 及 端口
    server 127.0.0.1:9501;
    server 127.0.0.1:9502;
}

server {
    # 监听端口
    listen 80; 
    # 绑定的域名,填写您的域名
    server_name proxy.hyperf.io;

    location / {
        # 将客户端的 Host 和 IP 信息一并转发到对应节点  
        proxy_set_header Host $http_host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;

        # 转发Cookie,设置 SameSite
        proxy_cookie_path / "/; secure; HttpOnly; SameSite=strict";

        # 执行代理访问真实服务器
        proxy_pass http://hyperf;
    }
}


以上配置完成以后,需要在hyperf根目录下创建public目录,作为公共静态资源目录,hyperf默认没有创建。因为博主这里用的是删库塔,所以直接上图

鼎云博客这里hyperf运行端口是9609,运行根目录是:/www/wwwroot/xxx/backend,为了测试分别创建了static目录和static/1.css文件


在服务器上访问结果如下:


http://127.0.0.1:9609/static/1.css   返回正常,状态码:200


http://服务器公网IP:9609/static/1.css   访问超时,这里一般是防火墙没有放行,因为用的是腾讯云,在腾讯云安全组已经放行9606端口了,后来发现是宝塔上面没有放行,添加或端口放行以后,返回正常,状态码:200

鼎云博客


http://反向代理代理域名/static/1.css nginx返回404,尝试修改了很多伪静态姿势无果, 最后在宝塔配置文件中发现了这几行代码 

鼎云博客

将其注释后,返回正常,问题解决


最后贴一下现在的伪静态设置


方法一,开启hyperf的静态资源方法
location /static {  
    expires 24h;
    error_log off;
    proxy_next_upstream http_502 http_504 error timeout invalid_header;  
    proxy_pass http://127.0.0.1:9609/static;  
    proxy_set_header Host 127.0.0.1;  
    proxy_set_header X-Forwarded-For $remote_addr;  
    break;
}

方法二,直接用nginx反射
location /static/{
    root "/www/wwwroot/***/backend/public/";
    break;
}


鼎云博客
  • 最新评论
  • 总共0条评论