Nginx 因 Selinux 服务导致无法远程訪问

本文记录了Nginx启动后本机可以正常访问,但远程访问时出现400 bad request的问题及解决方案。通过调整SELinux配置解决了文件权限问题。

文章来源:http://blog.youkuaiyun.com/johnnycode/article/details/41947581


2014-12-16日

昨天晚上处理好的网络訪问连接。早晨又訪问不到了。

现象是Nginx能够获得 Respone Head信息,但Respone Body信息间歇性能够获取,Nginx配置为监听80port。iptables 和 selinux 服务停止状态。

终于的处理结论是某IDC要求80port必须申请白名单才干够訪问,由于能够间歇性获取 Respone Body 导致对问题的误判,谨记!


2014-12-15日

本文暂且叫这个名吧,由于不是非常理解 Selinux 。或许你有更好的办法请告知我!

一、问题现象
Nginx 启动后本机能够正常訪问,使用Curl 命令能够获取默认 index.html,其它界面均不可訪问。远程訪问server时提示 400 bad request 信息。检查Nginx用户权限和port都正常。iptables 未启动。
# curl -I 123.123.123.123
HTTP/1.1 200 OK
Server: nginx
Date: Mon, 15 Dec 2014 10:52:34 GMT
Content-Type: text/html
Content-Length: 12
Last-Modified: Mon, 15 Dec 2014 10:00:36 GMT
Connection: keep-alive
Accept-Ranges: bytes
检查文件夹时发现文件夹权限后缀都有个点。


注意观察 html 文件夹下 50x.html 、default.html、index.html 这三个文件权限后的点以及 welcome.html 文件权限的区别。

二、问题分析

谷歌、度娘一番,终于结论为 selinux 保护文件夹都会在文件以及文件夹后有个点

查询 selinux 状态

$ sestatus
SELinux status:                 enabled
SELinuxfs mount:                /selinux
Current mode:                   enforcing
Mode from config file:          enforcing
Policy version:                 24
Policy from config file:        targeted
查询 selinux 执行模式

$ getenforce
Enforcing 
执行模式分为三种 enforcing (强制模式)、permissive(宽容模式)、disabled(关闭)

三、问题处理

既然分析问题可能出在 selinux ,那就尝试修复,修复方式分为两种暂时修复和永久修复!

暂时修复,网上盛传方式。

# setenforce 0 #关闭 Selinux
# setenforce 1 #开启 Selinux
实际上能够执行下试试效果,本人执行结果是在 enforcing 模式与 permissive 模式之间来回切换而已无不论什么效果,假设本人理解错误。请不吝赐教。

永久方式,确实可用。须要重新启动server!

1、改动 /etc/selinux/config 文件

# vim /etc/selinux/config
2、改动 SELINUX=disabled 。改动后内容

# This file controls the state of SELinux on the system.
# SELINUX= can take one of these three values:
#       enforcing - SELinux security policy is enforced.
#       permissive - SELinux prints warnings instead of enforcing.
#       disabled - SELinux is fully disabled.
SELINUX=disabled
# SELINUXTYPE= type of policy in use. Possible values are:
#       targeted - Only targeted network daemons are protected.
#       strict - Full SELinux protection.
SELINUXTYPE=targeted
3、重新启动电脑查看 Selinux 状态,应该为关闭状态
$ getenforce 
Disabled

四、问题总结

1、未停止 Selinux 服务时,文件新增、改动文件夹都是带着点的,參见 default.html 和 index.html。

2、停止 Selinux 服务后,文件新增将不受 Selinux 服务保护。也就是不带点了。參见 welcome.html。
第一次处理 Selinux 问题,若实际问题与解决方式有出入请告知我,虚心学习!谢谢。

感谢百度文库作者提供指导意见 


<think>好的,我需要帮用户解决在阿里云服务器上远程连接并访问图片的问题。首先,用户提到之前参考了四个引用,但那些主要是关于数据库连接的,比如MySQL和SQL Server,不过用户现在的问题是关于图片访问的。我需要结合已有的引用信息,找到相关点,并给出合适的解决方案。 首先,用户可能已经在服务器上部署了Web应用,比如使用Tomcat,如引用3提到的。所以第步可能是确认图片是否存放在Web服务器的目录下,例如Tomcat的webapps文件夹,这样可以通过URL直接访问。 其次,用户可能需要配置静态资源。例如,在Tomcat中,把图片放到webapps目录下的某个子文件夹,然后通过http://服务器IP:端口/文件夹/图片名.jpg来访问。这需要确保服务器防火墙和安全组开放了HTTP端口,比如80或8080。 另外,引用2提到Navicat连接MySQL时修改root的host值,虽然和图片无关,但说明可能需要配置服务器的安全组规则。用户需要检查阿里云的安全组设置,确保HTTP/HTTPS端口开放,允许外部访问。 如果用户使用Nginx或Apache作为Web服务器,可能需要配置虚拟主机或静态资源路径。例如,在Nginx中配置location块指向图片目录,并设置正确的权限。 此外,用户可能需要通过FTP或SSH上传图片到服务器,比如使用FileZilla或scp命令。确保图片上传到正确的目录,并且Web服务器有权限读取这些文件。 最后,考虑权限问题,比如SELinux或目录权限,可能需要调整。例如,使用chmod或chown命令修改图片文件的权限,确保Web进程可以访问。 总结步骤应该是:1. 确认Web服务器部署;2. 上传图片到正确目录;3. 配置安全组和防火墙;4. 通过URL访问图片。需要检查每个环节,确保没有遗漏。</think>### 阿里云服务器远程连接访问图片的方法 #### 步骤说明 1. **存储路径配置** 将图片文件上传至Web服务器(如Tomcat、Nginx、Apache)的静态资源目录。例如: - Tomcat默认静态资源路径:`/usr/local/tomcat/webapps/ROOT/images/`(参考引用3的静态页面部署逻辑)[^3] - Nginx默认路径:`/usr/share/nginx/html/` - 可通过FTP工具(如FileZilla)或SSH命令(如`scp`)上传图片至服务器。 2. **安全组开放端口** 在阿里云控制台配置安全组规则,确保目标端口(HTTP默认80,HTTPS默认443,Tomcat常用8080)已开放。 - 操作路径:**云服务器ECS → 实例 → 安全组 → 配置规则 → 添加安全组规则**(参考引用2的端口开放逻辑)[^2] 3. **访问URL格式** 通过浏览器直接访问图片资源,格式为: ```http http://[服务器IP]:[端口]/[相对路径]/图片文件名.扩展名 ``` 例如: ```http http://123.123.123.123:8080/images/example.jpg ``` 4. **权限与路径检查** - 检查图片文件权限: ```bash chmod 644 /path/to/image.jpg # 确保Web进程有读取权限 ``` - 检查Web服务器配置: - Nginx示例配置: ```nginx location /images/ { root /data/static/; autoindex on; # 可选,允许目录索引 } ``` #### 常见问题排查 - **404错误**:路径错误或文件未上传到正确位置。 - **403禁止访问**:文件权限不足或目录索引未开启。 - **连接超时**:安全组未开放端口或服务器防火墙拦截。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值