专栏首页北京马哥教育十分钟学技术系列 | Nginx从入门到上线

十分钟学技术系列 | Nginx从入门到上线

前言

由于微信小程序要使用Https,但是又不能修改已有线上的配置。所以最简单的方法就是使用nginx转发,在nginx上使用https,然后再转发到内部服务器。Nginx由于其优良的性能。一台4核16GB的内存完全可以支撑日均百万pv级别的访问。

基础知识

Nginx由于使用了 epoll模型,要求linux的内核必须在2.6以上。要了解epoll模型,可以看看知乎上的这篇文章:IO多路复用与 select,poll与epoll的关系。

使用 uname -a 查看Linux 内核版本,如下是Centos 6.5的显示:

下载

Nginx 的官网的下载地址:http://nginx.org/en/download.html。 Nginx官网提供了三个类型的版本:

  • Mainline version:Mainline 是 Nginx 目前主力在做的版本,可以说是开发版
  • Stable version:最新稳定版,生产环境上建议使用的版本
  • Legacy versions:遗留的老版本的稳定版

编译与安装

nginx依赖以下模块:

  • gzip模块需要 zlib 库 及其开发环境
  • rewrite模块需要 pcre 库及开发环境
  • ssl 功能需要openssl库及开发环境以及 yum install -y gcc-c++ 环境。

  以gzip 模块为例,查看以下模块是否安装:

如果没有安装,那么就 yum install zlib zlib-devel。

make是用来编译的,它从Makefile中读取指令,然后编译。make install是用来安装的,它也从Makefile中读取指令,安装到指定的位置。

最简单的编译安装 Nginx

tar zxvf nginx-1.10.2.tar.gz 解压以后进入到

./configure 是用来检查本机的的安装环境。在configure阶段结束以后,将会出现如下信息:

可以看到默认的安装目录以及一些基本的配置。

启动

nginx默认采用80端口,在直接启动nginx之前,先检查80端口是否被占用,使用fuser -n tcp 80或者netstat -pan | grep :80查看80端口是否被占用。这里假设没有被占用,然后进入 /usr/local/nginx(上文提到的默认安装目录)目录:

访问:http://ip:80/就可以看到nginx的欢迎页面。

nginx配置

在/usr/local/nginx/conf(默认配置)中,有一个nginx.conf文件。nginx.conf的代码是这样的:

删掉不必要的文件,基本文件类型是这个样子:

注意到最顶上的日志配置吗?在顶部设置的配置全局生效。但是子模块可以覆盖它。顶部日志配置:

假设开发人员改变了nginx.conf配置,测试nginx.conf是否合法:

nginx配置文件架构的图

这里有详细的配置:http://www.cszhi.com/20120513/nginx_nginx-conf.html

###https

在编译阶段需要附带编译上ssl模块:./configure --with-http_ssl_module

限流

http://nginx.org/en/docs/http/ngx_http_limit_req_module.html

注意在Http中配置以后需要在server中引入。

burst一秒中可以访问的数据量。burst相当于一个授权令牌,每秒中每次查询,当前burst-1,查询结束,burst+1; 如果burst为0时,访问不了。

可以看到,基本上是1秒返回一次了。

实例配置

作者:徐家三少 来源:https://juejin.im/post/58846fceb123db7389d2b70e


本文分享自微信公众号 - 马哥Linux运维(magedu-Linux),作者:徐家三少

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2017-07-26

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 11条nginx优化方法助力你的运维生涯

    云豆贴心提醒,本文阅读时间5分钟 隐藏nginx header里版本号信息 1.查看版本号 ? 2.隐藏版本号 在nginx配置文件的http标签内加入“s...

    小小科
  • Nginx流量复制

    为了实现流量拷贝,Nginx提供了ngx_http_mirror_module模块

    小小科
  • 20步打造最安全的Nginx Web服务器(下)

    八、控制缓冲区溢出攻击 编辑nginx.conf,为所有客户端设置缓冲区的大小限制。 vi /usr/local/nginx/conf/nginx.conf ...

    小小科
  • nginx配置基于端口、域名的虚拟主机

    首先,进入主机电脑的C:\Windows\System32\drivers\etc目录 找到hosts文件,以管理员身份打开 添加172.16.11.82 ...

    宸寰客
  • nginx实现动静分离的负载均衡集群

    客户端通过访问分发器的VIP来访问网站,现在应用更复杂,比如现在网站页面有:.php .html .png .jpeg .jsp 等, 有动态页...

    胡齐
  • Nginx超详细的常用操作命令

    还可以查看对应的pid文件,可以看到对应的master进程的进程编号,表示服务启动了

    用户4919348
  • 如何为 Nginx 添加一个模块?

    这篇文章发布于2013年,介绍如何为nginx添加模块,由于时间久远可能有些内容已经过时,不过"静态添加模块"方法仍然可以使用(从1.9.11版本开始支持loa...

    用户1560186
  • nginx的平滑升级方法:

    built by gcc 4.4.7 20120313 (Red Hat 4.4.7-16) (GCC) 

    二狗不要跑
  • Docker 之 Nginx环境搭建

    <架构探险之路> Docker搭建微服务自动部署平台,让我们来了解下Docker中如何安装、使用nginx吧!

    架构探险之道
  • nginx入门学习——编译安装 原

    Nginx是一款高性能的Web服务器、邮件服务器和反向代理服务器,由俄罗斯人Igor Sysoev(伊戈尔·赛索耶夫)开发的。

    阿dai学长

扫码关注云+社区

领取腾讯云代金券