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
不允许通过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部分不做修改,原来是什么就是什么。
location /ops-coffee/ { proxy_pass http://192.168.106.135:8181;}
http://domain/ops-coffee/ --> http://192.168.106.135:8181/ops-coffee/http://domain/ops-coffee/action/abc --> http://192.168.106.135:8181/ops-coffee/action/abc
2. 目标地址中带uri(proxy_pass http://tomcats/
,/也是uri),此时新的目标url中,匹配的uri部分将会被修改为该参数中的uri。
location /ops-coffee/ { proxy_pass http://192.168.106.135:8181/;}
http://domain/ops-coffee/ --> http://192.168.106.135:8181http://domain/ops-coffee/action/abc --> http://192.168.106.135:8181/action/abc
nginx upstream开启keepalive
upstream tomcat { server ops-coffee.cn:8080; keepalive 1024;}
server { location / { proxy_http_version 1.1; proxy_set_header Connection "";
proxy_pass http://tomcat; }}
nginx在项目中大多数情况下会作为反向代理使用,例如nginx后接tomcat,nginx后接php等,这时我们开启nginx和后端服务之间的keepalive能够减少频繁创建TCP连接造成的资源消耗,配置如上
keepalive: 指定每个nginxworker可以保持的最大连接数量为1024,默认不设置,即nginx作为client时keepalive未生效
proxy_http_version 1.1: 开启keepalive要求HTTP协议版本为HTTP 1.1
proxy_set_header Connection "": 为了兼容老的协议以及防止http头中有Connection close
导致的keepalive失效,这里需要及时清掉HTTP头部的Connection
404自动跳转到首页
server { location / { error_page 404 = @ops-coffee; }
location @ops-coffee { rewrite .* / permanent; }}
网站出现404页面不是特别友好,我们可以通过上边的配置在出现404之后给自动跳转到首页去
转载于:https://www.cnblogs.com/cheyunhua/p/10820294.html
Nginx的几个常用配置和技巧相关推荐
- Nginx的安装与常用配置
前言:本文是基于虚拟机上的centOS 7对Nginx的安装,可以使用uname -a查看centOS系统版本,本文用来记录安装nginx的步骤和相关命令,方便日后使用时查看. Nginx的安装与运行 ...
- nginx 配置多个域名 指向不同服务_Nginx的几个常用配置和技巧
文章列举了几个Nginx常见的,实用的,有趣的配置,希望看过之后能说一句:学到了! 一个站点配置多个域名 server { listen 80; server_name ops-coffee.cn b ...
- nginx服务(五)_常用配置指令介绍
Main 全局配置段常见的配置指令分类 文档: https://nginx.org/en/docs/ngx_core_module.html#accept_mutex 分类: 正常运行必备的配置 优化 ...
- Nginx架构模型及常用配置
文章目录 一.Nginx简介 二.Nginx架构设计 2.1 Nginx模块化设计 2.2 Nginx多进程模型 2.3 Nginx的epoll模式 三. Nginx配置文件 四.Nginx日志 4. ...
- Git 常用配置和技巧
以下使用 --global 标志全局配置的命令可以 ~/.gitconfig 文件下查看. 创建别名 使用 <alias> 可以极大地提高效率,我常用的有 使用下面的命令创建别名,将 &l ...
- Nginx的原理、常用配置和生产案例应用
目录 Nginx的概念 Nginx的系统架构 Nginx的服务过程 Nginx.conf配置讲解 自定义日志格式 Location语法 Nginx的具体应用 一.Nginx+Lua实现动态黑名单 二. ...
- Nginx配置及常用配置
文章目录 一.基本配置及配置说明 1.1 典型配置 1.2 全局变量(nginx内置预定义变量) 二.常用配置 2.1 反向代理配置 2.2 跨域CORS配置 2.2.1 使用反向代理解决跨域 2.2 ...
- Nginx 常用配置汇总,从入门到干活足矣
点击下方公众号「关注」和「星标」 回复"1024"获取独家整理的学习资料! 众所周知,Nginx 是 Apache服务不错的替代品.其特点是占有内存少,并发能力强,事实上 Ngin ...
- Nginx负载均衡常用配置
搭建实验环境(使用docker部署两台nginx容器) 1)使用搭建第一台nginx服务 [root@linux-node4 ~]# docker container run -d --name we ...
最新文章
- Machine Vision 浅谈
- springMVC文件下载
- JNDI配置DataResource代替JDBC连接数据库
- [Python人工智能] 三十四.Bert模型 (3)keras-bert库构建Bert模型实现微博情感分析
- C代码+汇编 C的for汇编学习分析
- leetcode 268
- 计算机应用专业特色建设情况,【计算机应用论文】计算机应用类专业建设和革新探索(共3022字)...
- matlab调用sh函数,Shell 函数定义与调用
- java B2B2C源码电子商务平台 --zuul跨域访问问题
- 当前仍在编辑文章 - Java 并 发 编 程 基 础
- dflow入门2——Slices
- qt感叹号_QT使用教程(四)之初体验
- Linux错误 “cp: omitting directory”解决办法
- 彻底理解面试难点之rb-tree(红黑树)续--对红黑树的插入和删除操作的一些理解!!!
- Java线程同步-模拟买票
- win10性能选项让计算机,一招开启win10“最强”模式,让你的电脑性能急速飙升!...
- 关于springmvc拦截器 controll aop执行顺序
- 【通俗易懂的通信】马尔可夫过程Ⅱ:马尔可夫链中的状态,常返、非常返
- 基于esp32-cam的监控小车
- 动态代理com.sun.proxy.$Proxy3 cannot be cast to 。。。。
热门文章
- 电子版,材料获取说明
- 20175221曾祥杰 实验四《Android程序设计》
- c++基本类型c++string与c风格字符串的相互转化
- 【android】如何让WebView对Video标签的支持更强力
- ZYNQ学习(1) —— 基础开发流程
- ROW_NUMBER、RANK、DENSE_RANK的用法
- SSD相关文章及博客
- NCEMASLG-32G的说明
- Ubuntu14.04 更新源 方法 提升更新的下载速度
- gitee最多上传多大文件_H5移动端图片压缩上传,基于Jquery的前端,实现拍照上传,选择相册