nginx下目录浏览及其验证功能、版本隐藏等配置记录
工作中常常有写不能有网页下载东西的需求,在Apache下搭建完成后直接导入文件即可达到下载/显示文件的效果;
而Nginx的目录列表功能默认是关闭的,如果需要打开Nginx的目录列表功能,需要手动配置,还可以进行访问验证;
nginx目录列表功能需要用到下面这个模块:
ngx_http_autoindex_module
此模块用于自动生成目录列表,只在 ngx_http_index_module模块未找到索引文件时发出请求.
下面就对nginx的目录浏览及验证访问功能的操作进行梳理:
1)设置目录浏览
打开nginx的配置文件,如:
[root@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; #虚拟目录
} }
查看下站点根目录下的文件:
[root@wangshibo ~]# ls /var/www/html/
aa hehe shibo test.html
重启nginx服务
[root@wangshibo ~]# /usr/local/nginx/sbin/nginx -s reload
然后就可以访问了:

如上的设置,要想设置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")
[root@wangshibo ~]# htpasswd -c /usr/local/nginx/conf/auth_password wangshibo //会被要求输入两次密码
[root@wangshibo ~]# cat /usr/local/nginx/conf/auth_password
wangshibo:$awe1$I2FIVtPG$I51oSU4eatH.tJdnmxtg67
Nginx配置中添加auth认证配置
[root@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服务
[root@wangshibo ~]# /usr/local/nginx/sbin/nginx -s reload
这时候访问站点的soft目录时就会被要求输入用户名和密码:

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

需要特别注意的是:
加上认证之后该目录下的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):
比如:
[root@wangshibo ~]# cat /var/www/html/aa/haha
this is test file


在浏览器里直接点击站点下的文件(比如上面的haha文件)就会下载下来了(点击文件,除了html格式的文件能直接读出来,其他文件都是直接下载)。
也可以在linux终端命令行里使用wget进行文件传输,比如在远程机器上下载上面站点的haha文件:
[root@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]
查看,发现已经传过来了
[root@bastion-IDC ~]# ls /tmp/testmd/
haha
[root@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 CLASSPATH: /data/tomcat8/bin/bootstrap.jar:/data/tomcat8/bin/tomcat-juli.jar
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 CLASSPATH: /data/tomcat8/bin/bootstrap.jar:/data/tomcat8/bin/tomcat-juli.jar
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 能看到更多的模块支持,然后编译安装即可。
[root@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 已经处理完正在等候下一次请求指令的驻留连接.
nginx下目录浏览及其验证功能、版本隐藏等配置记录的更多相关文章
- nginx下目录浏览及其验证功能配置记录
工作中常常有写不能有网页下载东西的需求,在Apache下搭建完成后直接导入文件即可达到下载/显示文件的效果;而Nginx的目录列表功能默认是关闭的,如果需要打开Nginx的目录列表功能,需要手动配置, ...
- 为Nginx启用目录浏览功能
今天工作需要,要给客户提供一个patch的下载地址,于是想用nginx的目录浏览功能来做,需要让客户看到指定一个目录下的文件列表,然后让他自己来选择该下载那个文件: 我们都知道在apache下可以配置 ...
- nginx开启目录浏览,解决中文乱码问题
nginx开启目录浏览,解决中文乱码问题 方法如下: server { listen 80; #listen [::]:80; server_name gongzi.liwenhui.xin gz.l ...
- Nginx设置目录浏览并配置验证
Nginx默认是不允许进行列目录的,如果需要使某个目录可以进行浏览,可如下设置:如: 让/var/www/soft 这个目录在浏览器中完成列出. 一.设置目录浏览1.打开/usr/local/ngin ...
- 配置 Nginx 的目录浏览功能
Nginx 默认是不允许列出整个目录的,需要配置 Nginx 自带的 ngx_http_autoindex_module 模块实现目录浏览功能 . location / { alias /opt/fi ...
- Nginx 开启目录浏览功能配置
在server节点下添加 server { listen ; server_name default; #index index.php; # 目录浏览功能 autoindex on; # 显示文件大 ...
- nginx打开目录浏览
server { listen 80; server_name localhost; index index.html index.htm index.php; autoindex on; #开启ng ...
- nginx设置目录浏览及解决中文乱码问题
在Nginx下默认是不允许列出整个目录的.如需开启此功能,先打开nginx.conf文件,在location server 或 http段中加入相关参数. http { include mime.ty ...
- PHP开启目录引索+fancyindex漂亮目录浏览带搜索功能
PHP开启目录引索 一. 前言 不知为何对nginx情有独钟, 最近练习php, 为了方便写代码, 便想要开启nginx的目录索引功能, 显然不如Apache开启的方便, 几次尝试都崩了... 我这个 ...
随机推荐
- Matplotlib:tick_params参数设置
1.tick_params语法 参数:axis : {‘x’, ‘y’, ‘both’} Axis on which to operate; default is ‘both’.reset : boo ...
- Shell脚本应用(if语句的结构)
1.测试:检测表达式是否成立,成立则返回值为0,否则为非0 方法: 1)test 表达式 2)[ 表达式 ] 2.文件测试: -d:是否为目录 -f:是否为文件 -e:是否存在 -r:是否有读取权限 ...
- 01LaTeX学习系列之---TeX的介绍与认识
目录 01TeX的介绍与认识 目录 前言 (一)TeX 的宣传 TeX - Beauty and Fun 1. TeX 是什么? 2. TeX 是哪家公司生产的? 3. 我们今天主角的名字怎么念啊?& ...
- Sudoku(第二次作业)
这里是github 工具清单: 编程语言:C++ 编程IDE:XCode 效能分析工具:XCode 源代码管理平台:Github PSP2.1 PSP2.1 Personal Software Pro ...
- Android Studio入门问题汇总
1.如何设置 AS 中的字体大小 2.如何切换 AS 的皮肤颜色,默认为黑色,修改为白色,改为 default 3.首次安装 Android Studio并打开时,如果创建了一个新工程并将工程保存在另 ...
- jquery easyui datagrid js获取记录数 页数 当前页
首先要吐槽的是 easyui竟然找不到未压缩的版本(1 也许它是藏在某个个几角旮旯; 2 压缩的版本想看懂? 大概你得在你脑袋上外接个CPU), 而且官方的文档简陋的不能再简陋了, 想实现个稍微复杂点 ...
- IO流_文件切割与合并
切割可以分两种方式:按文件个数切,按文件大小来切(建议用这种方式,因为按个数的话,有可能文件非常大) import java.io.File; import java.io.FileInputStre ...
- File类_常见的方法(获取目录中指定规则的内容)_listFiles
import java.io.File; public class ListDemo { public static void main(String[] args) { ListDemo(); } ...
- 自己定义控件-DragButton
版权声明:本文为博主原创文章.欢迎转载,转载请注明博主和原文链接. https://blog.csdn.net/u014077888/article/details/28097273 一.描写叙述 可 ...
- Android UI开发神兵利器之Android Action Bar Style Generator
版权声明:本文为博主原创文章,未经博主同意不得转载. https://blog.csdn.net/x359981514/article/details/26283129 ActionBar是3.0后的 ...