Nginx 反向代理

Nginx 是一个高性能的 HTTP 和反向代理服务器,代码完全用 C 实现,基于它的高性能以及诸多优点,我们可以把它设置为 hyperf 的前置服务器,实现负载均衡或 HTTPS 前置服务器等。

配置 Http 代理

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

配置 Websocket 代理

  1. # 至少需要一个 Hyperf 节点,多个配置多行
  2. upstream hyperf_websocket {
  3. # 设置负载均衡模式为 IP Hash 算法模式,这样不同的客户端每次请求都会与同一节点进行交互
  4. ip_hash;
  5. # Hyperf WebSocket Server 的 IP 及 端口
  6. server 127.0.0.1:9503;
  7. server 127.0.0.1:9504;
  8. }
  9. server {
  10. listen 80;
  11. server_name websocket.hyperf.io;
  12. location / {
  13. # WebSocket Header
  14. proxy_http_version 1.1;
  15. proxy_set_header Upgrade websocket;
  16. proxy_set_header Connection "Upgrade";
  17. # 将客户端的 Host 和 IP 信息一并转发到对应节点
  18. proxy_set_header X-Real-IP $remote_addr;
  19. proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
  20. proxy_set_header Host $http_host;
  21. # 客户端与服务端无交互 60s 后自动断开连接,请根据实际业务场景设置
  22. proxy_read_timeout 60s ;
  23. # 执行代理访问真实服务器
  24. proxy_pass http://hyperf_websocket;
  25. }
  26. }