Запуск приложения React и сервером node.js и nginx на домене 3го уровня
У меня на сервере запущено приложение express node.js. Используется nginx Приложение использует https с бесплатным сертификатом letsencrypt. URL: https://178.20.42.150.sslip.io
Теперь я хочу подключить домен третьего уровня: http://criptoarbitr.178.20.42.150.sslip.io
Соответственно он без https, меня это в данный момент устраивает.
Я настроил Nginx:
server {
listen 80;
listen [::]:80;
root /var/www/criptoarbitr.178.20.42.150.sslip.io/html;
index index.html index.htm index.nginx-debian.html;
server_name criptoarbitr.178.20.42.150.sslip.io www.criptoarbitr.178.20.42.150.sslip.io;
location / {
proxy_pass http://localhost:3000;
# try_files $uri $uri/ =404;
client_max_body_size 100m;
client_body_timeout 600s;
client_body_in_file_only clean;
client_body_buffer_size 16K;
proxy_connect_timeout 70;
proxy_send_timeout 90;
proxy_read_timeout 90;
proxy_redirect off;
proxy_set_header host $host;
proxy_set_header X-real-ip $remote_addr;
proxy_set_header X-forward-for $proxy_add_x_forwarded_for;
}
}
Открыл порты 3006, 3010 для тестирования. И у меня запускается мое второе приложение ( React) по URL: https://178.20.42.150.sslip.io и проксируется на proxy_pass http://localhost:3000;
Но я хочу запускать вместе с приложением Rect и сервер node.js вместе. Я это сделал на совсем другом проекте успешно. Там при тестировании на локальном PC запускал:
"cross-env NODE_ENV=development concurrently "npm run server" "npm run client""
client Rect запускался так: "start": "set PORT=3006 && react-scripts start",
В client/package.json имелось : "proxy": "http://localhost:3000", А server имел PORT 3000
B все работало нормально.
Но сейчас для домена третьего уровня, что-бы его перенаправить на другое приложение я проксирую в nginx criptoarbitr.178.20.42.150.sslip.io на 3000 port.
После всевозможных экспериментов получаю:
если server запустить на 3000 port, то он не запустится, потому что этот port уже занят client React. Запускаю сервер на 3010 порту. Если в client React package.json убрать "proxy": "http://localhost:3000", то client React приложение запустится ( кстати после манипуляций таких: удалить package-lock.json в client и server и в обоих проектах заново сделать npm install), вот связка client и server не работает. Они работают по отдельности. Проверял сервер: http://criptoarbitr.178.20.42.150.sslip.io:3010/test работает.
Если в client React package.json не убирать "proxy": "http://localhost:3000", то client React выведет: “Invalid Host header”
Консоль при запуске когда в client\package.json: "proxy": "http://localhost:3010"
Консоль:
128|reactc | [0] App
128|reactc | [1]
128|reactc | [1] > [email protected] start /var/www/criptoarbitr.178.20.42.150.sslip.io/html/client
128|reactc | [1] > set PORT=3006 && react-scripts start
128|reactc | [1]
128|reactc | [0] WARNING: NODE_APP_INSTANCE value of '0' did not match any instance config file names.
128|reactc | [0] WARNING: See https://github.com/lorenwest/node-config/wiki/Strict-Mode
128|reactc | [0] development mode
128|reactc | [0] App has been started on port 3010...
128|reactc | [1] ℹ 「wds」: Project is running at http://0.0.0.0:3000/
128|reactc | [1] ℹ 「wds」: webpack output is served from
128|reactc | [1] ℹ 「wds」: Content not from webpack is served from /var/www/criptoarbitr.178.20.42.150.sslip.io/html/client/public
128|reactc | [1] ℹ 「wds」: 404s will fallback to /
128|reactc | [1] Starting the development server...
128|reactc | [1]
128|reactcriptoarbitr_test_squeeze | [1]
128|reactcriptoarbitr_test_squeeze | Compiled with warnings.
128|reactcriptoarbitr_test_squeeze | [1]
128|reactcriptoarbitr_test_squeeze | [1]
128|reactcriptoarbitr_test_squeeze | src/components/Chart.js
128|reactcriptoarbitr_test_squeeze | [1]
128|reactcriptoarbitr_test_squeeze | [1] Search for the keywords to learn more about each warning.
128|reactcriptoarbitr_test_squeeze | [1]
128|reactcriptoarbitr_test_squeeze | To ignore, add // eslint-disable-next-line to the line before.
128|reactcriptoarbitr_test_squeeze | [1]
Эксперементирую GitHub: https://github.com/illusionoff/reactcriptoarbitr_test_squeeze
Можно ли заставить их работать вместе на доменном имени 3го уровня?