Я создал полнофункциональное приложение с внешним интерфейсом из React и server.js, написанным на nodejs(Express)
, и я использую Postgres
в качестве базы данных. Я делал это раньше и размещаю свой сайт на Heroku
.
Разница в том, что в Heroku мой интерфейс и бэкэнд были разделены на отдельные URL-адреса, так что в моем приложении реагирования я мог сделать
fetch('http://localhost:3005/url',{
method: 'get',
headers: {'Content-Type': 'application/json'},
})
.then(response => response.json())
Приведенный выше код выполняется во время выполнения моей реакции иузел на моем ноутбуке через npm start.
Мой server.js будет
app.get('/url', (req, res) => {
db.insert({
page_url: req.body.urlInfo,
user_visit_id: req.body.visitID,
})
.into('pageurl')
.then((id) => {
res.json(id);
}).catch(err => res.status(400).json('unable to write'))
})
В Heroku я просто изменил бы строку React внешнего интерфейса на:
fetch('http://**Ther URL where my server.js is**/url',{
method: 'get',
headers: {'Content-Type': 'application/json'},
})
.then(response => response.json())
Иэто будет работать абсолютно нормально. Проблема возникает сейчас, когда я должен развернуть приложение на школьном сервере. На сервере работает nginx, и я получил домен для этого проекта.
Внешний интерфейс размещается на nginx, и всякий раз, когда я посещаю свой домен, появляется внешний интерфейс, но как мне подключить его к моим конечным точкам server.js, если мне нужно, чтобы файл server.js находился на том же сервере, что иприложение реагирования, которое размещено на nginx. Я совершенно новичок в nginx и не имею конкретного представления о решении проблемы. У меня есть узел server.js, работающий на сервере с использованием pm2.
Но это сейчас мало пользы, так как моя выборка веб-интерфейса выполняет localhost: 3005 / url, который ищет точку URL-адреса в порту 3005 устройства, которое посещает домен, а не фактический сервер, на котором размещаетсявнешний интерфейс и узел server.js.
Я также пытался заменить localhost:3005/url
из server.js на IP-адрес сервера, но этот адрес, по-видимому, доступен для посещения только при подключении к Wi-Fi в школе.
Если я изменяювведите этот IP-адрес с моего телефона с подключением для передачи данных, адрес не может быть достигнут. Итак, я предположил, что "ipaddress:3005/url"
также не правильный способ сделать это. Я заблудился на этом этапе, и любые sugesstions были бы большой помощью !!! В идеале я хотел бы запустить мой веб-интерфейс на nginx на сервере и запустить pm2 server.js.
Мне просто нужен способ соединения конечных точек внешнего интерфейса и внутреннего интерфейса. Мне нужен URL
, где мой server.js является частью
fetch ('http://Ther URL, где мой server.js / url', {method:'get', headers: {'Content-Type': 'application / json'},}) .then (response => response.json ())
Мой файл конфигурации nginx сейчас выглядитвот так:
server {
listen 80;
listen [::]:80;
root /var/www/example.com/html/build;
index index.html index.php index.htm index.nginx-debian.html;
server_name example.com www.example.com;
location ~ \.php$ {
include snippets/fastcgi-php.conf;
# With php-fpm (or other unix sockets):
fastcgi_pass unix:/var/run/php/php7.2-fpm.sock;
# With php-cgi (or other tcp sockets):
# fastcgi_pass 127.0.0.1:9000;
}
location / {
try_files $uri /index.html;
#try_files $uri $uri/ =404;
}
}
Эта конфигурация nginx в данный момент обслуживает только внешний интерфейс. Кроме того, реальный домен.com заменяется на example.com в приведенном выше коде.
Спасибо!