django运行python manage.py runserver 0.0.0.0:8000成功但其他机子仍然无法访问问题终结

本文介绍了两种方法解决Django应用在本地运行后其他机器无法访问的问题。第一种是关闭防火墙,但存在安全风险;第二种是通过编辑iptables配置文件,允许特定端口(如3000、22、8000)的TCP通信,以实现安全的远程访问。详细步骤包括编辑iptables文件、重启防火墙,并展示了iptables配置示例。
摘要由CSDN通过智能技术生成

django运行python manage.py runserver 0.0.0.0:8000成功但其他机子仍然无法访问问题终结

方法一:直接关闭防火墙(不建议,存在安全风险)

执行关闭防火墙命令
[root@gx-jkstore-4 ~]# service iptables stop
再测试发现可以成功访问。
ps:
重启防火墙命令:service iptables restart
开启防火墙命令:service iptables start

方法二:配置iptables文件

编辑iptables文件
[root@gx-jkstore-4 sysconfig]# vim iptables
在iptables中增加8000端口tcp,并设置为ACCEPT

ps:
这个配置文件的大概意思是:
ACCEPT允许所有数据
REJECT拒绝所有的数据
意思是除了3000/22/8000外的其他端口均拒绝执行tcp通信。

编辑iptables

// An highlighted block
[root@gx-jkstore-4 sysconfig]# vim iptables

# sample configuration for iptables service
# you can edit this manually or use system-config-firewall
# please do not ask us to add additional ports/services to this default configuration
*filter
:INPUT ACCEPT [0:0]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
-A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
-A INPUT -p icmp -j ACCEPT
-A INPUT -i lo -j ACCEPT
-A INPUT -p tcp -m state --state NEW -m tcp --dport 3000 -j ACCEPT
-A INPUT -p tcp -m state --state NEW -m tcp --dport 22 -j ACCEPT
-A INPUT -p tcp -m state --state NEW -m tcp --dport 8000 -j ACCEPT
-A INPUT -j REJECT --reject-with icmp-host-prohibited
-A FORWARD -j REJECT --reject-with icmp-host-prohibited

重启防火墙

// An highlighted block
"iptables" 16L, 684C 已写入
[root@gx-jkstore-4 sysconfig]# 
[root@gx-jkstore-4 sysconfig]# 
[root@gx-jkstore-4 sysconfig]# 
[root@gx-jkstore-4 sysconfig]# service iptables stop
Redirecting to /bin/systemctl stop iptables.service
[root@gx-jkstore-4 sysconfig]# service iptables restart
Redirecting to /bin/systemctl restart iptables.service
[root@gx-jkstore-4 sysconfig]# iptables -L -n 
Chain INPUT (policy ACCEPT)
target     prot opt source               destination         
ACCEPT     all  --  0.0.0.0/0            0.0.0.0/0            state RELATED,ESTABLISHED
ACCEPT     icmp --  0.0.0.0/0            0.0.0.0/0           
ACCEPT     all  --  0.0.0.0/0            0.0.0.0/0           
ACCEPT     tcp  --  0.0.0.0/0            0.0.0.0/0            state NEW tcp dpt:3000
ACCEPT     tcp  --  0.0.0.0/0            0.0.0.0/0            state NEW tcp dpt:22
ACCEPT     tcp  --  0.0.0.0/0            0.0.0.0/0            state NEW tcp dpt:8000
REJECT     all  --  0.0.0.0/0            0.0.0.0/0            reject-with icmp-host-prohibited

Chain FORWARD (policy ACCEPT)
target     prot opt source               destination         
REJECT     all  --  0.0.0.0/0            0.0.0.0/0            reject-with icmp-host-prohibited
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Apache 作为一款强大的Web服务器软件,在处理 Django 项目的请求时,如果它监听的某个端口收到无效响应,通常可能是以下几个原因: 1. **配置错误**:Apache 的配置文件(如 httpd.conf 或者虚拟主机配置 vhost.conf)中可能没有正确设置 Django 的 WSGI 配置。你需要确保 Apache 指向了正确的 Python 脚本(比如 `wsgi.py`)和 Django 应用。 ```xml <VirtualHost *:80> ServerName example.com WSGIScriptAlias / /path/to/your/project/wsgi.py <Directory /path/to/your/project> Order allow,deny Allow from all </Directory> </VirtualHost> ``` 2. **WSGI 模块连接问题**:Apache 和 Django 之间的通信依赖于 WSGI(Web Server Gateway Interface)。如果你的模块路径设置不正确,或者 wsgi.py 文件本身有问题,Apache 可能无法正确解析请求。 3. **权限问题**:Apache 读取或执行 Django 项目的权限不足。检查 Apache 用户(通常是 www-data 或者 Apache 自身)是否有对项目目录及其文件的读写权限。 4. **Django 服务未运行**:尽管你可以通过 `manage.py runserver` 运行本地开发服务器,但是这并不意味着 Apache 可以直接访问。确认 Django 服务已经启动,并且运行在正确的端口上(默认是 8000 或者指定的其他端口)。 5. **负载均衡或反向代理设置**:如果你的应用有多个实例或使用了像 Nginx 的反代,可能需要调整它们的配置来指向正确的 Django 实例。 要解决这个问题,建议逐个排查上述原因,并检查 Apache 和 Django 日志文件(error_log)以获取更详细的错误信息。同时,确保所有组件间的版本兼容性和通信管道畅通无阻。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值