文章插图
文章列举了几个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)."";
使用方法:# 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或GBautoindex_localtime:为off(默认)时显示的文件时间为GMT时间;改为on后,显示的文件时间为服务器时间
默认当访问列出的txt等文件时会在浏览器上显示文件的内容,如果你想让浏览器直接下载,加上下边的配置
if ($request_filename ~* ^.*?.(txt|pdf|jpg|png)$) {add_header Content-Disposition 'attachment';}
配置默认站点
server {listen 80 default;}
当一个nginx服务上创建了多个虚拟主机时默认会从上到下查找,如果匹配不到虚拟主机则会返回第一个虚拟主机的内容,如果你想指定一个默认站点时,可以将这个站点的虚拟主机放在配置文件中第一个虚拟主机的位置,或者在这个站点的虚拟主机上配置listen default 。不允许通过IP访问
server {listen 80 default;server_name _;return 404;}
可能有一些未备案的域名或者你不希望的域名将服务器地址指向了你的服务器,这时候就会对你的站点造成一定的影响,需要禁止IP或未配置的域名访问,我们利用上边所说的default规则,将默认流量都转到404去 。上边这个方法比较粗暴,当然你也可以配置下所有未配置的地址访问时直接301重定向到你的网站去,也能为你的网站带来一定的流量 。
server {rewrite ^/(.*)$ https://ops-coffee.cn/$1 permanent;}
直接返回验证文件
location = /XDFyle6tNA.txt {default_type text/plain;return 200 'd6296a84657eb275c05c31b10924f6ea';}
很多时候微信等程序都需要我们放一个txt的文件到项目里以验证项目归属,我们可以直接通过上边这种方式修改nginx即可,无需真正的把文件给放到服务器上 。nginx配置upstream反向代理
http {...upstream Tomcats {server 192.168.106.176 weight=1;server 192.168.106.177 weight=1;}server {location /ops-coffee/ {proxy_pass http://tomcats;proxy_set_header Host $host;proxy_set_header X-Real-IP $remote_addr;proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;proxy_set_header X-Forwarded-Proto $scheme;}}}
稍不注意可能会落入一个proxy_pass
加杠不加杠的陷阱,这里详细说下proxy_pass http://tomcats
与proxy_pass http://tomcats/
的区别:虽然只是一个/的区别但结果确千差万别 。分为以下两种情况:
1. 目标地址中不带uri(
proxy_pass http://tomcats
) 。此时新的目标url中,匹配的uri部分不做修改,原来是什么就是什么 。
推荐阅读
- nginx网站漏洞该如何修复 加强服务器的安全防护
- 最好用的桌面图标快捷方式管理工具 桌面快捷方式软件
- 最好用的视频软件是什么? 腾讯视频都有哪些软件
- 世界十大禁用近身武器刀 世界上十大禁用的刀
- 梦见家门口有死人怎么回事 梦见家门口有死人用的东西
- Nginx 极简教程
- 做阿胶的玫瑰花瓣是什么玫瑰 阿胶糕用的玫瑰花瓣是干的吗
- stream模块 Nginx基于TCP/UDP端口的四层负载均衡配置梳理
- 那些有用的护肤小知识
- 女人最适用的断食排毒 法