设为首页 收藏本站
查看: 1062|回复: 0

[经验分享] nginx下目录浏览及其验证功能、版本隐藏等配置记录

[复制链接]

尚未签到

发表于 2017-12-23 14:38:10 | 显示全部楼层 |阅读模式
  工作中常常有写不能有网页下载东西的需求,在Apache下搭建完成后直接导入文件即可达到下载/显示文件的效果;
  而Nginx的目录列表功能默认是关闭的,如果需要打开Nginx的目录列表功能,需要手动配置,还可以进行访问验证;
  nginx目录列表功能需要用到下面这个模块:
  ngx_http_autoindex_module  
  此模块用于自动生成目录列表,只在 ngx_http_index_module模块未找到索引文件时发出请求.
  下面就对nginx的目录浏览及验证访问功能的操作进行梳理:
  1)设置目录浏览
  打开nginx的配置文件,如:
  

[iyunv@wangshibo ~]# vim /usr/local/nginx/conf/vhost/test.conf  server {
  listen 80;
  server_name localhost;            //访问http://ip,发现访问的站点目录还是默认的;可以将此处的localhost直接改成服务器ip地址
  root /var/www/html;
  index index.html;
  

  location / {
  autoindex on;
  autoindex_exact_size off;
  autoindex_localtime on;
  }
  

  location /images {
  root   /var/www/html/shibo;
  autoindex on;
  }
  

  location /bo   {
  autoindex  on;                        #自动显示目录
  autoindex_exact_size  off;            #改为off后,显示出文件的大概大小,单位是kB或者MB或者GB;即人性化方式显示文件大小否则以byte显示
  autoindex_localtime on;               #显示的文件时间为文件的服务器时间;即按服务器时间显示
  limit_rate_after 10m;                 #10m之后下载速度为10k
  limit_rate 10k;
  alias /opt/html/redhat;   #虚拟目录
  }
  

  
}
  

  

  查看下站点根目录下的文件:
[iyunv@wangshibo ~]# ls /var/www/html/

  aa  hehe  shibo  test.html
  重启nginx服务

[iyunv@wangshibo ~]# /usr/local/nginx/sbin/nginx -s>  然后就可以访问了:
DSC0000.png

  如上的设置,要想设置nginx的目录浏览功能,必须要打开下面这个参数
  autoindex on;
  此外,另外两个参数最好也加上去:
  autoindex_exact_size off;
  默认为on,显示出文件的确切大小,单位是bytes。
  改为off后,显示出文件的大概大小,单位是kB或者MB或者GB
  autoindex_localtime on;
  默认为off,显示的文件时间为GMT时间。
  改为on后,显示的文件时间为文件的服务器时间
  2)设置访问验证
  创建类htpasswd文件(如果没有htpasswd命令,可通过"yum install -y *htpasswd*"或"yum install -y httpd")
[iyunv@wangshibo ~]# htpasswd -c /usr/local/nginx/conf/auth_password wangshibo        //会被要求输入两次密码

[iyunv@wangshibo ~]# cat /usr/local/nginx/conf/auth_password

  wangshibo:$awe1$I2FIVtPG$I51oSU4eatH.tJdnmxtg67
  Nginx配置中添加auth认证配置
[iyunv@wangshibo ~]# vim /usr/local/nginx/conf/vhost/test.conf

  ......
  location ^~ /soft/ {
  root /var/www/html;              //此处为soft的上一级目录。注意root和alias虚拟目录设置区别
  autoindex on;
  autoindex_exact_size off;
  autoindex_localtime on;
  auth_basic "MyPath Authorized";                    //为提示信息,可以自行修改;会出现在第一次访问Nginx站点的弹出框内
  auth_basic_user_file /usr/local/nginx/conf/auth_password;                  //最好跟htpasswd文件的全路径
  }
  重启nginx服务

[iyunv@wangshibo ~]# /usr/local/nginx/sbin/nginx -s>  这时候访问站点的soft目录时就会被要求输入用户名和密码:
DSC0001.png

  如果用户名和密码输入错误会提示401错误(大名鼎鼎的http基本认证)
DSC0002.png

  需要特别注意的是:
  加上认证之后该目录下的php文件将不会被解析,会运行下载。
  如果要使其能够解析php可以,可将上面的配置改为:
  

location ^~ /soft/ {  location ~ \.php$ {                           //或者是location ~ .*\.(php|php5)?$ {
  root   /var/www/html;
  fastcgi_pass   127.0.0.1:9000;
  fastcgi_read_timeout 300;
  fastcgi_index  index.php;
  fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;;
  include        fastcgi.conf;
  }
  auth_basic "Authorized users only";
  auth_basic_user_file /usr/local/nginx/conf/auth_password;
  
}
  

  

  nginx运行目录浏览后,就可以利用wget进行文件远程传输了(只针对文件,因为在http下只能文件访问,直接跟url访问目录是404):
  比如:
[iyunv@wangshibo ~]# cat /var/www/html/aa/haha

  this is test file
DSC0003.png

DSC0004.png

  在浏览器里直接点击站点下的文件(比如上面的haha文件)就会下载下来了(点击文件,除了html格式的文件能直接读出来,其他文件都是直接下载)。
  也可以在linux终端命令行里使用wget进行文件传输,比如在远程机器上下载上面站点的haha文件:
[iyunv@bastion-IDC ~]# wget http://113.110.186.117/aa/haha -P /tmp/testmd

  --2017-01-03 15:14:18--  http://113.110.186.117/aa/haha
  Connecting to 113.110.186.117... connected.
  HTTP request sent, awaiting response... 200 OK
  Length: 18 [application/octet-stream]
  Saving to: “/tmp/testmd/haha”
  100%[=====================================================================================================>] 18          --.-K/s   in 0s      
  2017-01-03 15:14:18 (2.60 MB/s) - “/tmp/testmd/haha” saved [18/18]
  查看,发现已经传过来了
[iyunv@bastion-IDC ~]# ls /tmp/testmd/

  haha
[iyunv@bastion-IDC ~]# cat /tmp/testmd/haha

  this is test file
  -----------------------------------------------------------------------版本隐藏设置-------------------------------------------------------------------------------------------
  

----------------------------------------------------------------------------  
1)在nginx下禁止使用ip访问,将使用ip访问的流量重定向到公司的官网上。
  
在vhost下重新编辑一个default.conf 文件,如下:
  
server {
  listen 80 default_server;
  
#    server_name _;
  
#    return 500;
  rewrite ^(.*) https://www.wangshibo.com permanent;
  
}
  

  
然后重启nginx即可!
  
----------------------------------
  
下面就是直接紧张ip访问了
  
server {
  listen 80 default_server;
  server_name _;
  return 500;
  
}
  
----------------------------------
  

  
2)隐藏nginx的版本号
  
直接在nginx.conf文件中的http{}里面添加:
  
server_tokens off;
  

  
重启nginx服务即可!
  
curl -i http://www.wangshibo.com    测试访问就会发现nginx的header信息中已没有版本信息了(-i参数)
  

  
3)隐藏tomcat的版本号
  
# /data/tomcat8/bin/version.sh        #查看版本号信息
  
Using CATALINA_BASE:   /data/tomcat8
  
Using CATALINA_HOME:   /data/tomcat8
  
Using CATALINA_TMPDIR: /data/tomcat8/temp
  
Using JRE_HOME:        /usr/lib/jvm/java-1.7.0-openjdk.x86_64

  
Using>  
Server version: Apache Tomcat/8.5.15
  
Server built:   May 5 2017 11:03:04 UTC
  
Server number:  8.5.15.0
  
OS Name:        Linux
  
OS Version:     2.6.32-696.3.2.el6.x86_64
  
Architecture:   amd64
  
JVM Version:    1.7.0_141-mockbuild_2017_05_09_14_20-b00
  
JVM Vendor:     Oracle Corporation
  

  
# cp -r /data/tomcat8 /data/tomcat8.bak
  
# cd /data/tomcat8/lib
  
# jar xf catalina.jar
  
# vim org/apache/catalina/util/ServerInfo.properties
  
server.info=Apache Tomcat        //修改成这样
  
server.number=                 //清空
  
server.built=                  //清空
  

  
# jar cf catalina.jar org     //再次打包覆盖
  
# ll catalina.jar
  
# /data/tomcat8/bin/version.sh        //发现tomcat的版本信息已被隐藏
  
Using CATALINA_BASE:   /data/tomcat8
  
Using CATALINA_HOME:   /data/tomcat8
  
Using CATALINA_TMPDIR: /data/tomcat8/temp
  
Using JRE_HOME:        /usr/lib/jvm/java-1.7.0-openjdk.x86_64

  
Using>  
Server version: Apache Tomcat           
  
Server built:   
  
Server number:  
  
OS Name:        Linux
  
OS Version:     2.6.32-696.3.2.el6.x86_64
  
Architecture:   amd64
  
JVM Version:    1.7.0_141-mockbuild_2017_05_09_14_20-b00
  
JVM Vendor:     Oracle Corporation
  

  
4)nginx-status开启状态查看功能及参数说明
  
本模块在编译的时候默认是不编译的,如果是从源码编译安装的nginx,那么需要在./configure编译的时候加上对应的模块--with-http_stub_status_module
  
使用 ./configure --help 能看到更多的模块支持,然后编译安装即可。
  
[iyunv@www vhosts]# /usr/local/nginx/sbin/nginx -V      //使用这个命令可以查看在编译安装的时候使用了哪些模块
  
nginx version: nginx/1.8.1
  
built by gcc 4.4.7 20120313 (Red Hat 4.4.7-18) (GCC)
  
built with OpenSSL 1.0.1g 7 Apr 2014 (running with OpenSSL 1.0.1e-fips 11 Feb 2013)
  
TLS SNI support enabled
  
configure arguments: --prefix=/usr/local/nginx --user=nginx --group=nginx --with-http_ssl_module --with-http_flv_module --with-http_stub_status_module --with-http_gzip_static_module --with-pcre
  

  
接下来需要在nginx的配置文件中增加这个配置项。打开nginx的配置文件 nginx.conf,在server段里面增加如下的内容:
  location /nginx-status {
  stub_status on;
  access_log off;
  #allow 127.0.0.1;                        
  #deny all;
  
}
  

  
重启nginx服务后,访问:
  
# curl http://127.0.0.1/nginx-status
  
Active connections: 11921
  
server accepts handled requests
  
113    113     116
  
Reading: 0 Writing: 7 Waiting: 42
  

  
active connections – 活跃的连接数量
  
server accepts handled requests — 总共处理了113个连接 , 成功创建113次握手, 总共处理了116个请求
  
reading — 读取客户端的连接数.
  
writing — 响应数据到客户端的数量
  
waiting — 开启 keep-alive 的情况下,这个值等于 active – (reading+writing), 意思就是 Nginx 已经处理完正在等候下一次请求指令的驻留连接.
  

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.iyunv.com/thread-427181-1-1.html 上篇帖子: Nginx-uri、request 下篇帖子: 从入门到删除数据库
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表