要配置Nginx以允許WebSocket跨域訪問,可以在Nginx配置文件中添加以下內(nèi)容:
location / {
if ($http_upgrade != "websocket") {
proxy_pass http://backend;
break;
}
proxy_pass http://backend;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
}
在這個(gè)配置中,我們首先檢查請(qǐng)求是否包含Upgrade
頭,如果包含且值為websocket
,則表示這是一個(gè)WebSocket連接。接下來,我們?cè)O(shè)置Upgrade
和Connection
頭,并將請(qǐng)求代理到后端服務(wù)器。注意將http://backend
替換為實(shí)際的后端服務(wù)器地址。
另外,還需要在Nginx配置文件中添加以下內(nèi)容來允許跨域訪問:
location / {
add_header 'Access-Control-Allow-Origin' '*';
add_header 'Access-Control-Allow-Credentials' 'true';
add_header 'Access-Control-Allow-Methods' 'GET, POST, OPTIONS';
add_header 'Access-Control-Allow-Headers' 'Origin, Content-Type, Accept, Authorization';
}
在這個(gè)配置中,我們?cè)O(shè)置了允許所有來源訪問(Access-Control-Allow-Origin: *
),允許攜帶憑證(Access-Control-Allow-Credentials: true
),以及允許的請(qǐng)求方法和頭部。根據(jù)實(shí)際需求,可以根據(jù)需要修改這些配置。
完成以上配置后,重新加載Nginx配置文件即可使配置生效。這樣就配置了Nginx以允許WebSocket跨域訪問。