16.使用nginx作为反向代理服务器

优质
小牛编辑
136浏览
2023-12-01

使用nginx作为前端的反向代理将请求传递给应用是可行的。然而,只有nginx 1.4版本以上才支持WebSocket协议。下面是nginx代理HTTP和WebSocket请求的一个最基本的配置:

  server {
    listen 80;
    server_name _;

    location / {
      include proxy_params;
      proxy_pass http://127.0.0.1:5000;
    }

    location /socket.io {
      include proxy_params;
      proxy_http_version 1.1;
      proxy_buffering off;
      proxy_set_header Upgrade $http_upgrade;
      proxy_set_header Connection "Upgrade";
      proxy_pass http://127.0.0.1:5000/socket.io;
    }
  }

下面的例子增加了对负载平衡多个服务器的支持:

  upstream socketio_nodes {
    ip_hash;

    server 127.0.0.1:5000;
    server 127.0.0.1:5001;
    server 127.0.0.1:5002;
    # to scale the app, just add more nodes here!
  }

  server {
    listen 80;
    server_name _;

    location / {
      include proxy_params;
      proxy_pass http://127.0.0.1:5000;
    }

    location /socket.io {
      include proxy_params;
      proxy_http_version 1.1;
      proxy_buffering off;
      proxy_set_header Upgrade $http_upgrade;
      proxy_set_header Connection "Upgrade";
      proxy_pass http://socketio_nodes/socket.io;
    }
  }

虽然上面的例子可以作为最初的配置工作,要知道生产环境安装的nginx需要一个完整的配置,包括部署的其它方面,例如服务于静态文件的assert和SSL支持。