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;
}
}
proxy_cookie_path
如果没有部署https 需要将 proxy_cookie_path
中的 secure
删除,否则会导致session错误,登录验证码错误。
宝塔Nginx
以为Hcms已经指定了配置了静态资源的路径了,所以如果是用docker部署的在使用Nginx反向代理时,要注意静态文件不要被Nginx配置到root目录下。
return [
'settings' => [
...
// 静态资源
'document_root' => BASE_PATH . '/public',
'enable_static_handler' => true,
],
];
如果你是宝塔的Nginx,需要将下面的配置信息删除,因为静态文件读取也都交给Hyperf处理
root /www/wwwroot/hcms;
location ~ .*\.(gif|jpg|jpeg|png|bmp|swf)$
{
expires 30d;
error_log /dev/null;
access_log /dev/null;
}
location ~ .*\.(js|css)?$
{
expires 12h;
error_log /dev/null;
access_log /dev/null;
}