Доступ к приложению Django по частному туннелю IP/vpn сервера
Я пытаюсь получить доступ к приложению django через частный ip, я настроил сайт vpn на сайт с другим сервером (server2), чтобы server2 мог получить доступ к приложению через созданный мной частный ip (192.xx.xx.xx
) на сервере1. Теперь туннель запущен и работает, но когда server2 пытается связаться с приложением django на server1 через частный ip, приложение django не достигается.
Приложение использует nginx в качестве веб-сервера и gunicorn в качестве сервера приложений. Ниже оба конфигурационных файла
nginx.conf
server {
listen 80;
server_name 197.xxx.xx.xx 192.xxx.xx.xx;
access_log /var/log/nginx/access.log;
error_log /var/log/nginx/error.log;
client_max_body_size 20M;
location = /favicon.ico { access_log off; log_not_found off; }
location /static/ {
root /var/www/project_folder/project/settings;
}
location /media/ {
root /var/www/project_folder;
}
location / {
include proxy_params;
proxy_pass http://unix:/var/www/project_folder/project.sock;
}}
gunicorn.service
[Unit]
Description=gunicorn daemon
After=network.target
[Service]
User=root
Group=www-data
WorkingDirectory=/var/www/project_folder
ExecStart=/var/www/env/bin/gunicorn --workers 3 --bind unix:/var/www/project_folder/project.sock project.wsgi:application
[Install]
WantedBy=multi-user.target
settings.py
ALLOWED_HOSTS = ['197.xxx.xx.xx','192.xxx.xx.xx']
В приведенных фрагментах 197.xxx.xx.xx
это публичный ip сервера1 192.xxx.xx.xx
это личный ip сервера1 Таким образом, сервер не может вызвать приложение django через частный IP-адрес server1. Я вижу, что serve2 достигает server1 через журналы доступа nginx, но ничего в журналах ошибок nginx.
1) Я не уверен, как обойти это, так как я впервые получаю доступ к приложению django через частный ip (туннели vpn). Любой совет или указания о том, как я могу получить server2 для доступа к приложению django на server1, будет очень кстати.
2) предположим, у меня есть 2 приложения в одном проекте django, и я хочу, чтобы app1 был доступен через публичный IP-адрес server1, а app2 - через частный IP-адрес server1. это возможно? если так, как я могу сделать это.
Заранее спасибо, я был бы признателен, кто-то протягивает руку с указаниями о том, как я могу достичь вышеизложенного
1 ответ
Мне удалось это исправить, проблема заключалась в том, что я понимал, как работает туннель vpn, и я также предоставлял неправильный порт в Nginx для приложения, которое находится на частном IP.
Я исправил это, назначив порт 80 и создав отдельный conf-файл Nginx для приложения, которое я хочу, на частном IP-адресе, и я сохранил также один conf для общедоступного IP-приложения, они оба слушают один и тот же порт, но разные IP-адреса.
т.е.
конфиденциальный ip app conf
server {
listen 80;
server_name 192.xxx.xx.xx;
access_log /var/log/nginx/access_ussd.log postdata;
error_log /var/log/nginx/error_ussd.log;
client_max_body_size 20M;
location = /favicon.ico { access_log off; log_not_found off; }
location /static/ {
root /var/www/IPH_USSD/iph_ussd/settings;
}
location /media/ {
root /var/www/IPH_USSD;
}
location / {
include proxy_params;
proxy_pass http://192.168.10.10:9000;
}}
общедоступное приложение IP conf
server {
listen 80;
server_name xxx.xxx.xx.xx;
access_log /var/log/nginx/access.log;
error_log /var/log/nginx/error.log;
client_max_body_size 20M;
location = /favicon.ico { access_log off; log_not_found off; }
location /static/ {
root /var/www/IPH_Dashboard_App/ingabo/settings;
}
location /media/ {
root /var/www/IPH_Dashboard_App;
}
location / {
include proxy_params;
proxy_pass http://unix:/var/www/IPH_Dashboard_App/ingabo.sock;
}}
Я надеюсь, что это поможет любому, кто столкнется с подобной проблемой в будущем