在服务器专用IP / VPN隧道上访问Django应用程序

问题描述 投票:-1回答:1

我试图通过私人IP访问django应用程序,我配置了一个vpn站点到另一台服务器(server2)站点,以便server2可以通过在server1上创建的私有IP(192.xx.xx.xx)访问该应用程序。现在隧道已启动并运行但是当server2尝试通过私有ip访问server1上的django应用程序时,未达到django应用程序。

该应用程序使用nginx作为Web服务器和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.朋友

ALLOWED_HOSTS = ['197.xxx.xx.xx','192.xxx.xx.xx']

在上面的片段中,197.xxx.xx.xx是server1的公共ip,而192.xxx.xx.xx是server1的私有ip。所以服务器无法通过server1私有ip调用django应用程序。我可以看到serve2通过nginx访问日志到达server1,但nginx错误日志中没有任何内容。

1)我不知道如何绕过这个,因为我第一次通过私人IP(vpn隧道)访问django应用程序。有关如何让server2到达server1上的django应用程序的任何建议或指示将非常受欢迎。

2)假设我在一个django项目中有2个应用程序,我希望app1可以通过server1的公共IP访问,而app2可以通过server1的私有IP访问。这有可能吗?如果是这样我怎么能实现它。

提前谢谢你,我很感激有人伸出手来指导我如何实现上述目标也是如此

django nginx gunicorn ussd ipsec
1个回答
0
投票

我设法解决了这个问题,问题是我对vpn隧道如何工作的理解,我也在Nginx中给出了一个私有IP上的app的错误端口。

我通过分配端口80并为私有IP上的应用创建单独的Nginx conf文件来修复此问题,并且我还保留了公共IP应用程序的一个conf,它们都监听相同的端口但不同的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应用程序配置

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;
}}

我希望这有助于将来面临类似问题的任何人

© www.soinside.com 2019 - 2024. All rights reserved.