概述

作为一个前端,我觉得必须要学会使用 nginx 干下面几件事:

  1. 代理静态资源
  2. 设置反向代理(添加https)
  3. 设置缓存
  4. 设置 log
  5. 部署 smtp 服务
  6. 设置 redis 缓存(选)

下面我按照这个节奏一一研究一遍,把心得记录下来,供以后开发时参考,相信对其他人也有用。

参考资料:

前端工程师学习 Nginx 入门篇

设置反向代理

为什么叫反向代理?因为一般的代理是代理客户端,而如果我们要代理服务器的话,就好像反向一样,所以叫反向代理。所以我们把代理服务器的代理都叫反向代理。

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)的更多相关文章

  1. 前端必须掌握的 nginx 技能(4)

    概述 作为一个前端,我觉得必须要学会使用 nginx 干下面几件事: 代理静态资源 设置反向代理(添加https) 设置缓存 设置 log 部署 smtp 服务 设置 redis 缓存(选) 下面我按 ...

  2. 前端必须掌握的 nginx 技能(3)

    概述 作为一个前端,我觉得必须要学会使用 nginx 干下面几件事: 代理静态资源 设置反向代理(添加https) 设置缓存 设置 log 部署 smtp 服务 设置 redis 缓存(选) 下面我按 ...

  3. 前端必须掌握的 nginx 技能(1)

    概述 作为一个前端,我觉得必须要学会使用 nginx 干下面几件事: 代理静态资源 设置反向代理(添加https) 设置缓存 设置 log 部署 smtp 服务 设置 redis 缓存(选) 下面我按 ...

  4. [Linux] 一个前端必会的 Nginx 免费教程-在虚拟机中用deepin测试

    原文技术胖的 nginx 技术胖 专注于前端开发 deepin Linux Deepin 是一个基于 DEB 包管理的一个独立操作系统,和那些 Ubuntu(下个大版本是基于 debian 开发) 的 ...

  5. 前端开发者必备的Nginx知识

    摘要: 最常用的Web服务器 -- Nginx 原文:前端开发者必备的Nginx知识 作者:ConardLi Fundebug经授权转载,版权归原作者所有. Nginx在应用程序中的作用 解决跨域 请 ...

  6. 前端必须知道的 Nginx 知识

    Nginx一直跟我们息息相关,它既可以作为Web 服务器,也可以作为负载均衡服务器,具备高性能.高并发连接等. 1.负载均衡 当一个应用单位时间内访问量激增,服务器的带宽及性能受到影响, 影响大到自身 ...

  7. 前端打包文件在nginx上403的解决办法

    遇到的问题表现出来就是如题所述,因此作为题目. 我们知道,前端有很多方便的构建和打包工具,如webpack等,通常我们会把前端文件打包到dist目录下,部署到服务器上,如nginx等. 这次遇到的问题 ...

  8. 前端打包文件在 nginx 上 403 的解决办法

    遇到的问题表现出来就是如题所述,因此作为题目. 我们知道,前端有很多方便的构建和打包工具,如 webpack 等,通常我们会把前端文件打包到dist目录下,部署到服务器上,如 nginx 等. 这次遇 ...

  9. 谁说前端不需要懂-Nginx反向代理与负载均衡

    转:https://juejin.im/post/5b01336af265da0b8a67e5c9 学到老活到老 前端圈一直很新,一直要不停的学习,而且在进入大厂的路上,还要求熟悉一门后台语言等等.用 ...

随机推荐

  1. 9、linux权限-ACL权限

    来自为知笔记(Wiz)

  2. json文件处理四个函数

    import json # json.dumps(json_dict,ensure_asscii = False)函数的使用,将字典转化为字符串 ensure_ascii=False将Unicode编 ...

  3. 服务器挂载 ntfs32 硬盘

    1,fdisk -l 查看硬盘名称 2,mount -t ntfs-3g /硬盘名/  /目标目录/ 3,umount   /硬盘名/ 4,如果卸载不了 就fuser -km /目标目录/

  4. Ansible安装部署和常用命令,及其主机清单inventory(二)

    1.ansible的安装方式 1.1使用yum源安装 yum install ansible -y 1.2使用rpm包安装 https://dl.fedoraproject.org/pub/epel/ ...

  5. IIS 程序池优化配置方案

    内容目录 IIS 程序池优化配置方案IIS高并发配置一.IIS站点绑定程序池设置二.支持万级并发请求 IIS 程序池优化配置方案 最近由于系统的客户越来越多,有客户反映访问速度变慢,尤其是api的请求 ...

  6. Go语言标准库之fmt.Print

    Go语言fmt.Printf使用指南 本文整理了Go语言的标准输出流(fmt.Printf)在打印到屏幕时的格式化输出操作. 在这里按照占位符将被替换的变量类型划分,更方便查询和记忆. General ...

  7. linux系统使用grep命令提取文件的基名或者路径名

    效果等于~]#dirname /etc/sysconfig/network-scripts/ifcfg-ens33 echo "/etc/sysconfig/network-scripts/ ...

  8. 测试数年来,我只提了几十个bug

    ---恢复内容开始--- 测试做了十来年,大大小小的项目产品已经记不清了,开发们在一如既往地改着改了无数遍的bug,测试也一如既往的提着提了无数遍的bug,那么今天笔者对以往的bug类型做一个简单的总 ...

  9. c# HttpClient和HttpWebRequest添加Basic类型的Authentication认证

    c#项目中用到调用客户接口,basic身份认证,base64格式加密(用户名:密码)贴上代码以备后用 1.使用HttpClient实现basic身份认证 using (HttpClient clien ...

  10. zencart后台隐藏配置菜单configuration.php?gID=6

    zencart后台隐藏配置菜单-模块选项 http://域名/后台/configuration.php?gID=6