Ваша задача отправить запрос на локальный IP адрес POS-терминала с удаленного сервера требует решения, учитывающего некоторые ограничения в сетевой архитектуре и безопасности. Рассмотрим несколько возможных подходов:
### 1. Прокси-сервер
Поскольку вы уже пытались проксировать запросы, важно убедиться, что ваш прокси-сервер использует правильную настройку. Ниже приводится пример реализации прокси-сервера на стороне VDS, который будет перенаправлять запросы к локальному IP-адресу POS-терминала.
Вы можете использовать такие инструменты, как Nginx или Express.js (Node.js).
**Пример на Node.js с использованием Express:**
```javascript
const express = require('express');
const request = require('request');
const app = express();
const PORT = 3000;
// Укажите IP адрес вашего POS терминала и маршрут
const posTerminalIP = 'http://192.168.1.100/api'; // замените на свой IP и путь
app.get('/pos-proxy', (req, res) => {
// Прокси запрос к POS терминалу
request(posTerminalIP + req.originalUrl, { json: true }, (err, resp, body) => {
if (err) { return res.status(500).send(err); }
res.send(body);
});
});
app.listen(PORT, () => {
console.log(`Server is running on http://localhost:${PORT}`);
});
```
### 2. VPN
Организуйте виртуальную частную сеть (VPN) между вашим VDS и локальной сетью, где находится POS-терминал. Это позволит вашему серверу видеть локальные IP-адреса, и вы сможете отправлять прямые запросы к POS-терминалу.
### 3. Использование вебхуков
Если POS-терминал поддерживает вебхуки, вы могли бы настроить его для отправки событий на ваш сервер. Таким образом, когда происходит событие на терминале, он отправляет данные на ваш сервер, и вы получаете информацию, даже если не можете обращаться к нему напрямую.
### 4. CORS
Если вы решите использовать JavaScript на клиентской стороне и POS-терминал не предоставляет соответствующих заголовков CORS, вы не сможете обойти эту проблему без серверного прокси. Вы не сможете напрямую отправлять запросы к POS-терминалу из браузера, если он не предоставляет доступ к `Access-Control-Allow-Origin`.
### 5. Обратный прокси через nginx
Если вы используете nginx в качестве обратного прокси, вы можете настроить его таким образом, чтобы он перенаправлял определенные запросы к вашему локальному IP адресам:
```nginx
server {
listen 80;
server_name your-domain.com;
location /pos-api/ {
proxy_pass http://192.168.1.100/api/;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
}
}
```
### Общие рекомендации
- Убедитесь, что ваш роутер (если POS-терминал подключен к роутеру) позволяет настройки портов и маршрутизацию.
- Проверяйте настройки брандмауэра для разрешения обращений.
- Если используется SSL, убедитесь, что у вас корректные сертификаты.
Определитесь, какой из подходов лучше всего соответствует вашим потребностям и ограничениям, и используйте его.