前端必须掌握的 nginx 技能(2)
概述
作为一个前端,我觉得必须要学会使用 nginx 干下面几件事:
- 代理静态资源
- 设置反向代理(添加https)
- 设置缓存
- 设置 log
- 部署 smtp 服务
- 设置 redis 缓存(选)
下面我按照这个节奏一一研究一遍,把心得记录下来,供以后开发时参考,相信对其他人也有用。
参考资料:
设置反向代理
为什么叫反向代理?因为一般的代理是代理客户端,而如果我们要代理服务器的话,就好像反向一样,所以叫反向代理。所以我们把代理服务器的代理都叫反向代理。
nginx 里面设置反向代理只需要使用 proxy_pass 指令就可以了。具体文档在这里 Module ngx_http_proxy_module。示例如下:
events {
# worker_connections 1024; ## Default: 1024
}
http {
server {
listen 8767;
server_name 192.168.2.32;
location / {
root /Users/zhouyang/Documents/tencent/test/local-nginx;
}
location /baidu {
proxy_pass http://www.baidu.com;
}
}
}
我们在 bash 执行如下命令,然后打开 192.168.2.32:8767/baidu 就会自动跳转到百度。(注意:这里的 192.168.2.32 要改成你自己的 ip 地址)。
nginx -s quit // 优雅退出
nginx -c /Users/zhouyang/Documents/tencent/test/local-nginx/nginx.conf // 使用指令目录下的配置文件启动 nginx
设置跳转
1.根据 url 进行跳转。根据 url 进行跳转也很简单,代码改成如下即可:
events {
# worker_connections 1024; ## Default: 1024
}
http {
server {
listen 8767;
server_name 192.168.2.32;
location / {
root /Users/zhouyang/Documents/tencent/test/local-nginx;
}
location /baidu {
proxy_pass http://www.baidu.com;
}
location /yaya {
return 302 /baidu;
}
}
}
我们在 bash 执行如下命令,然后打开 192.168.2.32:8767/yaya ,就会自动跳转到 192.168.2.32:8767/yaya ,最后自动跳转到百度。(注意:这里的 192.168.2.32 要改成你自己的 ip 地址)。
nginx -s quit // 优雅退出
nginx -c /Users/zhouyang/Documents/tencent/test/local-nginx/nginx.conf // 使用指令目录下的配置文件启动 nginx
2.根据 referer 进行跳转。根据 url 进行跳转也很简单,代码改成如下即可。具体文档在这里 Module ngx_http_referer_module。
events {
# worker_connections 1024; ## Default: 1024
}
http {
server {
listen 8767;
server_name 192.168.2.32;
location / {
root /Users/zhouyang/Documents/tencent/test/local-nginx;
}
location /haha {
valid_referers none blocked server_names
*.example.com example.* www.example.org/galleries/
~\.google\.;
if ($invalid_referer = '') {
return 401;
}
}
location /baidu {
proxy_pass http://www.baidu.com;
}
location /yaya {
return 302 /baidu;
}
}
}
我们在 bash 执行如下命令,然后打开 192.168.2.32:8767/haha ,就会看到 401 禁止访问了。(注意:这里的 192.168.2.32 要改成你自己的 ip 地址)。
注意:nginx 会根据 valid_referers 列出的进行匹配,如果匹配上则会自动赋值内部变量 $invalid_referer 为空字符串,如果没有匹配上则会自动赋值为字符串 '1'。
nginx -s quit // 优雅退出
nginx -c /Users/zhouyang/Documents/tencent/test/local-nginx/nginx.conf // 使用指令目录下的配置文件启动 nginx
根据 ip 地址控制访问
我们还可以根据 ip 地址控制访问,禁止某一些 ip 访问。示例如下:
events {
# worker_connections 1024; ## Default: 1024
}
http {
server {
listen 8767;
server_name 192.168.2.32;
location / {
deny 192.168.2.32;
root /Users/zhouyang/Documents/tencent/test/local-nginx;
}
location /haha {
valid_referers none blocked server_names
*.example.com example.* www.example.org/galleries/
~\.google\.;
if ($invalid_referer = '') {
return 401;
}
}
location /baidu {
proxy_pass http://www.baidu.com;
}
location /yaya {
return 302 /baidu;
}
}
}
上面我们禁止了 192.168.2.32 访问 192.168.2.32:8767,但是由于 nginx 的匹配机制,访问其它路由还是可以的。
负载均衡
我们还可以做负载均衡,具体文档在这里 Module ngx_http_upstream_module。
我没有深入研究,想深入研究的话可以看文档和查资料。
添加 https
由于我还在申请 aws ec2,所以等申请完毕之后再回来补充。
前端必须掌握的 nginx 技能(2)的更多相关文章
- 前端必须掌握的 nginx 技能(4)
概述 作为一个前端,我觉得必须要学会使用 nginx 干下面几件事: 代理静态资源 设置反向代理(添加https) 设置缓存 设置 log 部署 smtp 服务 设置 redis 缓存(选) 下面我按 ...
- 前端必须掌握的 nginx 技能(3)
概述 作为一个前端,我觉得必须要学会使用 nginx 干下面几件事: 代理静态资源 设置反向代理(添加https) 设置缓存 设置 log 部署 smtp 服务 设置 redis 缓存(选) 下面我按 ...
- 前端必须掌握的 nginx 技能(1)
概述 作为一个前端,我觉得必须要学会使用 nginx 干下面几件事: 代理静态资源 设置反向代理(添加https) 设置缓存 设置 log 部署 smtp 服务 设置 redis 缓存(选) 下面我按 ...
- [Linux] 一个前端必会的 Nginx 免费教程-在虚拟机中用deepin测试
原文技术胖的 nginx 技术胖 专注于前端开发 deepin Linux Deepin 是一个基于 DEB 包管理的一个独立操作系统,和那些 Ubuntu(下个大版本是基于 debian 开发) 的 ...
- 前端开发者必备的Nginx知识
摘要: 最常用的Web服务器 -- Nginx 原文:前端开发者必备的Nginx知识 作者:ConardLi Fundebug经授权转载,版权归原作者所有. Nginx在应用程序中的作用 解决跨域 请 ...
- 前端必须知道的 Nginx 知识
Nginx一直跟我们息息相关,它既可以作为Web 服务器,也可以作为负载均衡服务器,具备高性能.高并发连接等. 1.负载均衡 当一个应用单位时间内访问量激增,服务器的带宽及性能受到影响, 影响大到自身 ...
- 前端打包文件在nginx上403的解决办法
遇到的问题表现出来就是如题所述,因此作为题目. 我们知道,前端有很多方便的构建和打包工具,如webpack等,通常我们会把前端文件打包到dist目录下,部署到服务器上,如nginx等. 这次遇到的问题 ...
- 前端打包文件在 nginx 上 403 的解决办法
遇到的问题表现出来就是如题所述,因此作为题目. 我们知道,前端有很多方便的构建和打包工具,如 webpack 等,通常我们会把前端文件打包到dist目录下,部署到服务器上,如 nginx 等. 这次遇 ...
- 谁说前端不需要懂-Nginx反向代理与负载均衡
转:https://juejin.im/post/5b01336af265da0b8a67e5c9 学到老活到老 前端圈一直很新,一直要不停的学习,而且在进入大厂的路上,还要求熟悉一门后台语言等等.用 ...
随机推荐
- PAT Basic 1013 数素数 (20 分)
令 Pi 表示第 i 个素数.现任给两个正整数 M≤N≤104,请输出 PM 到 PN 的所有素数. 输入格式: 输入在一行中给出 M 和 N,其间以空格分隔. 输出格式: 输 ...
- Linux_GDB调试学习笔记
点击直接跳转 第01课:调试信息与调试原理 第02课:启动GDB调试 第03课:GDB常用的调试命令概览 第04课:GDB常用命令详解(上) 第05课:GDB常用命令详解(中) 第06课:GDB 常用 ...
- 第一次把本地项目与git相连
原文:https://blog.csdn.net/a987625922/article/details/82189863 新建远程仓库(github或者gitee) 将本地仓库转换成版本库,并将文件添 ...
- spring ObjectFactory
AspectJAwareAdvisorAutoProxyCreator implements PostProcessor postProcessorAfterInitialization(Object ...
- CH5101 LICS//hdu5904 LICS
恭喜我已经正式沦为pj组选手QwQ 标题两个题其实不一样的.这是ch 这是hdu 一.CH上的:裸题,求LICS.n<=3000 经典普及组dp题,题解烂大街了.所以对于这题,只讲细节: $ ...
- 【hiho1715】树的联通问题
题目大意:给定一棵 1~n 标号的树.Tree[L,R]表示最少需要选择的边的数量使得 L~R 号点两两连通.求: \[ \sum_{L=1}^{n} \sum_{R=L}^{n} \operator ...
- python读取文件出现\ufeff问题
现象: 读取csv文件,表头为'ID',但读取后显示'\ufeffID',所以使用dict['ID']读取会报错 原因: 该文件保存时保存了BOM,保存于文件头部 解决: 将原有的 file_cont ...
- ubuntu安装wireshark
$sudo apt-add-repository ppa:wireshark-dev/stable$sudo apt update$sudo apt install wireshark 出于安全方面的 ...
- 【leetcode】1274. Number of Ships in a Rectangle
题目如下: (This problem is an interactive problem.) On the sea represented by a cartesian plane, each sh ...
- 随机验证码生成和join 字符串
函数:string.join() Python中有join()和os.path.join()两个函数,具体作用如下: join(): 连接字符串数组.将字符串.元组.列表中的元素以指定的字符(分隔符) ...