我正在尝试通过私有ip访问django应用程序,我将vpn站点配置为与另一台服务器(server2)进行站点连接,以便server2可以通过我创建的私有ip(192.xx.xx.xx
)访问该应用程序在server1上。现在,隧道已启动并正在运行,但是当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.py
ALLOWED_HOSTS = ['197.xxx.xx.xx','192.xxx.xx.xx']
在以上代码段中,197.xxx.xx.xx
是server1的公用ip,而192.xxx.xx.xx
是server1的专用ip。因此,服务器to无法通过server1私有ip调用django应用。我可以看到serve2正在通过nginx访问日志到达server1,但是在nginx错误日志中什么都没有。
1)我不确定如何解决此问题,因为这是我第一次通过私有ip(vpn隧道)访问Django应用。任何有关如何使server2到达server1上的django应用程序的建议或指导都将受到欢迎。
2)假设我在一个django项目中有2个应用程序,并且我希望app1可通过server1的公共IP访问,而app2可通过server1的私有IP访问。这有可能吗?如果可以的话,我该怎么做。
在此先感谢您,我很感谢有人提供有关如何实现上述目标的指导 也是
答案 0 :(得分:0)
我设法解决了这个问题,问题在于我对vpn隧道的工作方式有所了解,而且我还在Nginx中为私有IP上的应用提供了错误的端口。
我通过分配端口80并为我要在私有IP上的应用程序创建单独的Nginx conf文件来解决此问题,我还为公共IP应用程序保留了一个conf,它们都侦听相同的端口但使用不同的IP
即
私有IP应用程序配置
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;
}}
我希望这可以帮助将来遇到类似问题的任何人