检查配置文件

使用sudo nginx -t测试配置是否正确,同时查看配置文件位置,一定要使用sudo,否则因权限不够显示测试失败。

反向代理WebSocket

说明

WebSocket不同于HTTP协议,但WebSocket的握手过程是和HTTP兼容的,通过HTTP的Upgrade特性将HTTP连接升级为WebSocket连接,这个过程中利用了UpgradeConnection请求头。

在Nginx中要明确的设置UpgradeConnection,才能进行WebSocket长连接。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
server {

server_name ws.example.com;

location /ws/ {

proxy_pass http://127.0.0.1:8080/ws/;

proxy_set_header Upgrade $http_upgrade;

proxy_set_header Connection "Upgrade";

}

}

参考

NGINX as a WebSocket Proxy

静态文件

1
2
3
4
5
6
7
8
9
10
11
server {

server_name example.com;

alias /home/user/www;

autoindex on; # 显示文件目录
autoindex_exact_size off; # 显示文件大小的单位为MB,GB, 设成on则会以byte为单位显示


}

自定义404页面

1
2
3
4
5
6
7
server {
location /doc {
alias /home/user/www/site/
# 这个404.html也在site文件夹里,但这里写的其实是url,不用写全文件路径
error_page 404 404.html;
}
}

其他选项

proxy_buffering

用来控制是否打开后端响应内容的缓冲区,如果这个设置为off,那么proxy_buffersproxy_busy_buffers_size这两个指令将会失效。 但是无论proxy_buffering是否开启,对proxy_buffer_size都是生效的。

proxy_buffering开启的情况下,nignx会把后端返回的内容先放到缓冲区当中,然后再返回给客户端(边收边传,不是全部接收完再传给客户端)。 临时文件由proxy_max_temp_file_sizeproxy_temp_file_write_size这两个指令决定的。

如果proxy_buffering关闭,那么nginx会立即把从后端收到的响应内容传送给客户端,每次取的大小为proxy_buffer_size的大小,这样效率肯定会比较低。