1. upstream hyperf {
  2. # Hyperf HTTP Server 的 IP 及 端口
  3. server 127.0.0.1:9501;
  4. server 127.0.0.1:9502;
  5. }
  6. server {
  7. # 监听端口
  8. listen 80;
  9. # 绑定的域名,填写您的域名
  10. server_name proxy.hyperf.io;
  11. location / {
  12. # 将客户端的 Host 和 IP 信息一并转发到对应节点
  13. proxy_set_header Host $http_host;
  14. proxy_set_header X-Real-IP $remote_addr;
  15. proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
  16. # 转发Cookie,设置 SameSite
  17. proxy_cookie_path / "/; secure; HttpOnly; SameSite=strict";
  18. # 执行代理访问真实服务器
  19. proxy_pass http://hyperf;
  20. }
  21. }

proxy_cookie_path

如果没有部署https 需要将 proxy_cookie_path中的 secure删除,否则会导致session错误,登录验证码错误。

宝塔Nginx

以为Hcms已经指定了配置了静态资源的路径了,所以如果是用docker部署的在使用Nginx反向代理时,要注意静态文件不要被Nginx配置到root目录下。

  1. return [
  2. 'settings' => [
  3. ...
  4. // 静态资源
  5. 'document_root' => BASE_PATH . '/public',
  6. 'enable_static_handler' => true,
  7. ],
  8. ];

如果你是宝塔的Nginx,需要将下面的配置信息删除,因为静态文件读取也都交给Hyperf处理

  1. root /www/wwwroot/hcms;
  2. location ~ .*\.(gif|jpg|jpeg|png|bmp|swf)$
  3. {
  4. expires 30d;
  5. error_log /dev/null;
  6. access_log /dev/null;
  7. }
  8. location ~ .*\.(js|css)?$
  9. {
  10. expires 12h;
  11. error_log /dev/null;
  12. access_log /dev/null;
  13. }