PHP站点和NodeJS Websocket应用程序在同一个Nginx服务器/配置后面
Posted
技术标签:
【中文标题】PHP站点和NodeJS Websocket应用程序在同一个Nginx服务器/配置后面【英文标题】:PHP Site and NodeJS Websocket Application behind the same Nginx server/config 【发布时间】:2019-02-20 19:53:41 【问题描述】:我有一个运行 nginx 并为 php 网站提供服务的开发服务器。 下面是正常工作的 nginx 配置。
cat /etc/nginx/nginx.conf
user www-data;
worker_processes auto;
pid /run/nginx.pid;
include /etc/nginx/modules-enabled/*.conf;
events
worker_connections 768;
# multi_accept on;
http
client_max_body_size 100M;
sendfile on;
tcp_nopush on;
tcp_nodelay on;
keepalive_timeout 65;
types_hash_max_size 2048;
include /etc/nginx/mime.types;
default_type application/octet-stream;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2; # Dropping SSLv3, ref: POODLE
ssl_prefer_server_ciphers on;
access_log /var/log/nginx/access.log;
error_log /var/log/nginx/error.log;
gzip on;
include /etc/nginx/conf.d/*.conf;
include /etc/nginx/sites-enabled/*;
这非常适合为 PHP 站点提供服务;但是,我也希望 Nginx 运行基于 Node 的 websockets 服务器。
我需要对此 Nginx 配置进行哪些更改才能接收 websockets 流量?
【问题讨论】:
【参考方案1】:我在以下位置创建了一个新文件:
vi /etc/nginx/sites-enabled/somesite.com
把它放进去:
map $http_upgrade $connection_upgrade
default upgrade;
'' close;
upstream websocket
server localhost:3000;
server
listen 8080;
server_name somesite.com;
access_log /var/log/nginx/websocket.access.log;
location /
proxy_pass http://websocket;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
这似乎行得通。
【讨论】:
以上是关于PHP站点和NodeJS Websocket应用程序在同一个Nginx服务器/配置后面的主要内容,如果未能解决你的问题,请参考以下文章