Я сделал угловое приложение, которое связывается с сервером nodeJS. Я наконец-то достиг настройки прокси-сервера dev-сервера angular со следующим файлом конфигурации, и все работает очень хорошо:
{
"/api/*":
{
"target": "http://localhost:8080",
"secure": false,
"pathRewrite": {"^/api" : ""}
},
"/sock/*":
{
"target": "http://localhost:8060/socket.io/"
}
}
Затем я попытался развернуть свое приложение с веб-сервером nginx и настроить сервер и прокси-сервер со следующей конфигурацией:
server {
listen 3600;
listen [::]:3600;
server_name localhost;
root /home/ubuntu/mahe/tchernobyl/angular_tchernobyl/dist/tchernobyl;
index index.html index.htm index.nginx-debian.html;
location / {
try_files $uri $uri/ /index.html;
}
location /sock {
proxy_pass http://localhost:8060/socket.io;
}
location /api {
proxy_pass http://localhost:8080;
sub_filter /api/ /;
}
}
Каким-то образом это, наконец, работает с socket.io, у меня просто одно сообщение об ошибке при каждом обновлении, я не знаю почему:
WebSocket connection to 'ws://localhost:8100/sock/?EIO=3&transport=websocket&sid=qU-TS9vQwIPwZej7AAAK' failed: Error during WebSocket handshake: Unexpected response code: 400
РЕДАКТИРОВАТЬ: Эта очень вторичная проблема была решена с помощью этого решения https://github.com/socketio/socket.io/issues/1942#issuecomment-82352072
Но главная проблема в том, что я могу полностью добраться до своего экспресс-сервера, обслуживающего данные, через / api / [ключ], но не могу получить никаких данных. Для объяснения: мой экспресс-сервер работает на 8080, а Интернет - на 3600. Если я наберу http://localhost:8080/data,, я получу свои данные, но если я наберу http://localhost:3600/api/data, я получу ответ «Cannot GET / data». (обратите внимание, что я переписываю с 'sub_filter / api / /;')
В консоли появляется следующее сообщение:
Refused to execute a script because its hash, its nonce, or 'unsafe-inline' appears in neither the script-src directive nor the default-src directive of the Content Security Policy.