Nginx的WebSocket跨域訪問控制怎么配置

小億
225
2024-05-07 10:41:54
欄目: 編程語言

要配置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è)置UpgradeConnection頭,并將請(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跨域訪問。

0