Я пытаюсь разместить сервер разработки Vue (включая веб-сокет) в подкаталоге моего домена с помощью nginx, но при моей текущей настройке сервер vue отвечает на запросы вместо сервера разработки веб-пакетов.
Чтобы было ясно, я хочу, чтобы мое приложение размещалось на https://xxx.yyy/zzz/
, я хочу, чтобы ресурсы и т. Д. Размещались в https://xxx.yyy/zzz/path/to/asset
, и я хочу, чтобы сервер разработки веб-пакетов размещался в https://xxx.yyy/zzz/sockjs-node/info?t=...
.Я почти уверен, что это возможно без специальной установки nginx, потому что она работает без подкаталога.
Вот мои настройки:
nginx
server {
# server name, ssl, etc
location /test/ {
proxy_pass http://localhost:8080;
}
}
Создайте проект
$ vue create -d hello-world
vue.config.js
module.exports = {
publicPath: '/test/',
devServer: {
public: "0.0.0.0/test",
disableHostCheck: true,
}
}
Затем запустите
$ npm run serve
клиент отправляет запросы во все нужные места, но
$ curl https://xxx.yyy/test/sockjs-node/info
возвращает index.html
, тогда как
$ curl localhost:8080/sockjs-node/info
возвращаетожидаемая информация о сокете.Я также попытался изменить настройку nginx на proxy_pass http://localhost:8080/;
, но из-за этого index.html
не рендерится, когда я перехожу на https://xxx.yyy/test/
, потому что он ожидает путь и не пересылается.Когда я также изменяю publicPath
на /
, я не могу заставить клиента искать ресурсы в правильном подкаталоге.
Есть ли правильный способ сделать это?