前言
文章列举了几个Nginx常见的,实用的,有趣的配置,希望看过之后能说一句:学到了!
一个站点配置多个域名
server { listen 80; server_name ops-coffee.cn b.ops-coffee.cn;}
server_name 后跟多个域名即可,多个域名之间用空格分隔
一个服务配置多个站点
server { listen 80; server_name a.ops-coffee.cn; location / { root /home/project/pa; index index.html; }}server { listen 80; server_name ops-coffee.cn b.ops-coffee.cn; location / { root /home/project/pb; index index.html; }}server { listen 80; server_name c.ops-coffee.cn; location / { root /home/project/pc; index index.html; }}
基于Nginx虚拟主机配置实现,Nginx有三种类型的虚拟主机
基于IP的虚拟主机: 需要你的服务器上有多个地址,每个站点对应不同的地址,这种方式使用的比较少
基于端口的虚拟主机: 每个站点对应不同的端口,访问的时候使用ip:port的方式访问,可以修改listen的端口来使用
基于域名的虚拟主机: 使用最广的方式,上边例子中就是用了基于域名的虚拟主机,前提条件是你有多个域名分别对应每个站点,server_name填写不同的域名即可
nginx添加账号密码验证
server { location / { auth_basic "please input user&passwd"; auth_basic_user_file key/auth.key; }}
有很多服务通过nginx访问,但本身没有提供账号认证的功能,就可以通过nginx提供的authbase账号密码认证来实现,可以用以下脚本来生成账号的密码
# cat pwd.pl #!/usr/bin/perluse strict;my $pw=$ARGV[0] ;print crypt($pw,$pw)."/n";
使用方法:
# perl pwd.pl ops-coffee.cnopf8BImqCAXww# echo "admin:opf8BImqCAXww" > key/auth.key
nginx开启列目录
当你想让nginx作为文件下载服务器存在时,需要开启nginx列目录
server { location download { autoindex on; autoindex_exact_size off; autoindex_localtime on; }}
autoindex_exact_size: 为on(默认)时显示文件的确切大小,单位是byte;改为off显示文件大概大小,单位KB或MB或GB
autoindex_localtime: 为off(默认)时显示的文件时间为GMT时间;改为on后,显示的文件时间为服务器时间
默认当访问列出的txt等文件时会在浏览器上显示文件的内容,如果你想让浏览器直接下载,加上下边的配置
if ($request_filename ~* ^.*?/.(txt|pdf|jpg|png)$) { add_header Content-Disposition 'attachment';}
配置默认站点
server { listen 80 default;}
当一个nginx服务上创建了多个虚拟主机时默认会从上到下查找,如果匹配不到虚拟主机则会返回第一个虚拟主机的内容,如果你想指定一个默认站点时,可以将这个站点的虚拟主机放在配置文件中第一个虚拟主机的位置,或者在这个站点的虚拟主机上配置listen default
新闻热点
疑难解答