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

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

前言

由于微信小程序要使用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秒返回一次了。

实例配置

 

责任编辑:庞桂玉 来源: 马哥Linux运维
相关推荐

2020-12-17 06:48:21

SQLkafkaMySQL

2022-06-16 07:31:41

Web组件封装HTML 标签

2012-07-10 01:22:32

PythonPython教程

2019-04-01 14:59:56

负载均衡服务器网络

2021-03-03 11:36:57

Java 8Java 15Java

2023-06-07 08:27:10

Docker容器

2021-09-07 09:40:20

Spark大数据引擎

2023-04-12 11:18:51

甘特图前端

2015-09-06 09:22:24

框架搭建快速高效app

2023-11-30 10:21:48

虚拟列表虚拟列表工具库

2009-10-09 14:45:29

VB程序

2019-09-16 09:14:51

2023-07-15 18:26:51

LinuxABI

2022-08-26 09:01:07

CSSFlex 布局

2023-10-11 08:18:55

DjangoPython

2024-04-01 00:55:51

Canvas前端项目

2015-11-06 11:03:36

2022-04-13 22:01:44

错误监控系统

2020-12-11 09:40:10

DevOpsCICD

2023-11-09 14:44:27

Docker镜像容器
点赞
收藏

51CTO技术栈公众号