1.nginx安装与部署

1.1 nginx入门

Web 网络服务是一种被动访问的服务程序,即只有接收到互联网中其他主机发出的 请求后才会响应,最终用于提供服务程序的 Web 服务器会通过 HTTP(超文本传输协议)或 HTTPS(安全超文本传输协议)把请求的内容传送给用户。

目前能够提供 Web 网络服务的程序有 IIS、Nginx 和 Apache 等。其中,IIS(Internet Information Services,互联网信息服务)是 Windows 系统中默认的 Web 服务程序。

2004 年 10 月 4 日,为俄罗斯知名门户站点而开发的 Web 服务程序 Nginx 横空出世。 Nginx 程序作为一款轻量级的网站服务软件,因其稳定性和丰富的功能而快速占领服务器市 场,但 Nginx 最被认可的还当是系统资源消耗低且并发能力强,因此得到了国内诸如新浪、 网易、腾讯等门户站的青睐。

1.2 web框架

常用web框架为diango,flask,tornado以及sanic等

django 大而全, 功能特别多 ,例如:form表单 , ORM, 中间件 ,特点:笨重,臃肿,并发数: 600/s

flask 特点:轻量级的,小而精, 它使用的都是第三方模块进行拼接起来的 并发数:4988/s

tornado 特点:支持异步, 处理用户请求过来数据不用等待,类似于协程 并发数:2138/s

sanic 特点:python3.5+uvloop 并发数: 33342/s

1.3WEB服务器

nginx 开源的,支持高性能,高并发的

apache nginx他父亲

IIS(windows下面的WEB Server)

使用curl -I 命令查看taobao和JD的WEB服务器,淘宝和京东都是使用的都是自主定制的nginx的web服务器

1.4 nginx的部署

1.4.1 安装nginx的依赖库

yum install -y gcc patch libffi-devel python-devel zlib-devel bzip2-devel openssl openssl-devel ncurses-devel sqlite-devel readline-devel tk-devel gdbm-devel db4-devel libpcap-devel xz-devel

1.4.2 下载安装nginx源码包

1.4.3 解压缩源码(还是在/opt目录下)

tar -zxvf nginx-1.12.0.tar.gz

1.4.4 配置,编译安装 开启nginx状态监测功能

cd /opt/nginx-1.12.0
./configure --prefix=/opt/nginx112

1.4.5 编译安装

cd /opt/nginx-1.12.0
make && make install

1.4.6  启动nginx,进入sbin目录,找到nginx启动命令

cd /opt/nginx112/sbin
./nginx #启动
./nginx -s stop #关闭
./nginx -s reload # 平滑重启 ,修改了nginx.conf之后,可以不重启服务,加载新的配置

1.4.7 查看nginx运行状态

查看端口是否运行: netstat -tunlp
查看进程是否运行: ps -ef | grep nginx

1.4.8 nginx目录下的文件

conf 存放nginx所有配置文件的目录,主要nginx.conf
html 存放nginx默认站点的目录,如index.html、error.html等
logs 存放nginx默认日志的目录,如error.log access.log
sbin 存放nginx主命令的目录,sbin/nginx

1.4.9 nginx.conf配置文件解析

#定义nginx工作进程数
worker_processes 5;
#错误日志
#error_log logs/error.log;
#http定义代码主区域
http {
include mime.types;
default_type application/octet-stream;
#定义nginx的访问日志功能
#nginx会有一个accses.log功能,查看用户访问的记录
log_format main '$remote_addr - $remote_user [$time_local] "$request" '
'$status $body_bytes_sent "$http_referer" '
'"$http_user_agent" "$http_x_forwarded_for"'; #开启日志功能
access_log logs/access.log main;
sendfile on;
keepalive_timeout 65;
#开启gzip压缩传输
gzip on;
#虚拟主机1 定义一个 斗鱼网站
server {
#定义nginx的访问入口端口,访问地址是 192.168.11.37:80
listen 80;
#定义网站的域名www.woshidouyu.tv
#如果没有域名,就填写服务器的ip地址 192.168.11.37
server_name www.woshidouyu.tv;
#nginx的url域名匹配
#只要请求来自于www.woshidouyu.tv/111111111
#只要请求来自于www.woshidouyu.tv/qweqwewqe
#最低级的匹配,只要来自于www.woshidouyu.tv这个域名,都会走到这个location
location / {
#这个root参数,也是关键字,定义网页的根目录
#以nginx安装的目录为相对路径 /opt/nginx112/html
#可以自由修改这个root定义的网页根目录
root html;
#index参数定义网站的首页文件名,默认的文件名
index index.html index.htm;
}
#错误页面的优化(只要是遇到前面4系列的错误,就会直接跳转到相对目录下的40x.html页面)
error_page 400 401 402 403 404 /40x.html;
}
}

2. nginx的配置

2.1 nginx错误页面配置

2.1.1配置nginx错误页面

vim /opt/nginx112/conf/nginx.conf
修改server代码块
server {
listen 80;
server_name localhost;
location / {
root html;
index index.html index.htm;
}
error_page 400 402 403 404 /40x.html;
#error_page 500 502 503 504 /50x.html;
}
平滑重启nginx
/opt/nginx112/sbin/nginx -s reload

2.1.2 nginx错误页面优化

打开百度或其他网站,随便输入一个不存在的链接,就可以访问到错误页面
右键点击页面空白处,查看网页源代码
拷贝源代码,粘贴到/opt/nginx112/html/40x.html下面去
再访问我们的网站,随便输入一个不存在的链接, 就可以访问到这个错误页面
http://192.168.1.40/asldfjasd

2.2 nginx访问日志功能

nginx访问日志功能

log文件路径:/opt/nginx112/logs

日志效果

[root@localhost logs]# more access.log
192.168.1.42 - - [08/Apr/2019:15:39:49 +0800] "GET /abbbb HTTP/1.1" 404 215
"-" "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like
Gecko) Chrome/71.0.3578.98 Safari/537.36"
192.168.1.42 - - [08/Apr/2019:15:39:49 +0800] "GET /favicon.ico HTTP/1.1" 4
04 215 "http://192.168.1.44/abbbb" "Mozilla/5.0 (Windows NT 10.0; WOW64) Ap
pleWebKit/537.36 (KHTML, like Gecko) Chrome/71.0.3578.98 Safari/537.36"

2.3 nginx限制网站来源IP访源

nginx限制网站来源IP

如果想要在本地访问一个域名, 可以更改本机hosts文件

windows下

c:\\\windows\system32\drivers\etc\hosts

linux下

/etc/hosts

2.4 配置nginx多虚拟主机

配置nginx多虚拟主机

效果:
(1) 访问三个不同的域名,显示三个不同的网站
(2) 三个网站互不影响

2.4.1 修改配置文件

worker_processes  5;

#error_log  logs/error.log;

events {
worker_connections 1024;
} http {
include mime.types;
default_type application/octet-stream; log_format main '$remote_addr - $remote_user [$time_local] "$request" '
'$status $body_bytes_sent "$http_referer" '
'"$http_user_agent" "$http_x_forwarded_for"';
access_log logs/access.log main;
sendfile on;
keepalive_timeout 65;
#gzip on;
server {
listen 80;
server_name zongze.qishi3.com;
location / {
#deny 192.168.1.0/24;
root /opt/qishi3/zongze;
index index.html index.htm;
}
error_page 400 402 403 404 /40x.html;
#error_page 500 502 503 504 /50x.html;
}
server {
listen 80;
server_name xiaochun.qishi3.com;
location / {
root /opt/qishi3/xiaochun;
index index.html index.htm;
}
}
server {
listen 80;
server_name huafeng.qishi3.com;
location / {
root /opt/qishi3/huafeng;
index index.html index.htm;
}
}
}

2.4.2 在服务器上创建三个目录

cd /opt
rm -rf qishi3
mkdir -p qishi3/huafeng
mkdir -p qishi3/zongze
mkdir -p qishi3/xiaochun
touch qishi3/huafeng/index.html
touch qishi3/zongze/index.html
touch qishi3/xiaochun/index.html
分别打开这三个index.html文件
vim index.html
分别添加内容
我是华峰
我是宗泽
我是小春
然后保存退出

2.4.3 修改本机hosts文件

c:\\windows\system32\drivers\etc\hosts

添加以下三行解析记录

192.168.1.40    zongze.qishi3.com
192.168.1.40 xiaochun.qishi3.com
192.168.1.40 huafeng.qishi3.com

2.4.4 平滑重启nginx

重启后即可

2.5 nginx的代理功能

nginx的代理功能主要有正向代理与反向代理

2.5.1 正向代理

正向代理,图例如下,server在明,用户在暗,服务器只知道这个区域访问,具体到指定的pc还是不清楚的,正向代理目前用的比较少,日常用的比较多的是各种翻墙软件。

2.5.2 反向代理

反向代理,图例如下,对于用户来说只知道访问这个网站,具体到后面这个网站哪台服务器则不是清楚,对于现在的web服务器则用的比较多的是反向代理

2.5.3 配置反向代理

实验效果:

在windows中访问代理服务器,然后让代理服务器去拿web服务器的数据

请求数据: windows ——> 192.168.1.15 ——> 192.168.1.40

返回数据: windows <—— 192.168.1.15 <—— 192.168.1.40

机器准备,两台服务器

master 192.168.1.15  主负载

slave 192.168.1.40  web1

修改代理服务器192.168.1.15的配置文件

vim /opt/nginx112/conf/nginx.conf
在location代码块下添加一行数据
proxy_pass http://192.168.1.40;

补充:其他关于代理相关方面的知识,详情查看https://www.cnblogs.com/gbq-dog/p/10653054.html

2.6 nginx的负载均衡

负载均衡,在网站初期,单台服务器可以承担多数人的访问,在访问人数的增加,单个服务器已经无法承担。在增加多个服务器后,平均的让服务器接收这些访问量,就需要一个负载均衡。而nginx可以实现负载均衡

2.6.1 配置负载均衡

实验背景:

(1)有三台机器 一台为nginx代理服务器(负载均衡调度器), 另外两台为WEB服务器

192.168.1.15    # 负载均衡调度器
192.168.1.40 # WEB服务器1
192.168.1.169 # WEB服务器2

(2)用户访问192.168.1.15,由nginx代理服务器通过负载均衡调度器分别分配到两个WEB服务器,实现负载均衡

实验步骤:

(1)准备三台机器

192.168.1.15    # 负载均衡调度器
192.168.1.40 # WEB服务器1
192.168.1.169 # WEB服务器2

(2)两个WEB服务器可以正常访问

访问web服务器1返回“代噶好,我系帅帅刘 我真的是1.40这台机器”
访问web服务器2返回“MMP 我TM是文龙”

(3)在nginx代理服务器(负载均衡调度器)上面做如下配置:

(4)分别平滑重启三台机器的nginx服务

/opt/nginx112/sbin/nginx -s reload

(5)访问192.168.1.15就可以看到,WEB1和WEB2交替返回数据

注:在实际应用场景中,不一定会使用nginx来做负载均衡,有些在大的公司中,则会用一些硬件来做负载均衡,例如F5等。

a

Linux-基础学习(三)-Nginx学习的更多相关文章

  1. Linux学习笔记(9)linux网络管理与配置之一——Linux基础网络命令与学习大纲(0)

    大纲目录 0.常用linux基础网络命令 1.配置主机名 2.配置网卡信息与IP地址 3.配置DNS客户端 4.配置名称解析顺序 5.配置路由与默认网关 6.双网卡绑定 [1] ping [2]net ...

  2. Linux基础常用命令大全学习

    1.ls命令 就是list的缩写,通过ls 命令不仅可以查看linux文件夹包含的文件,而且可以查看文件权限(包括目录.文件夹.文件权限)查看目录信息等等 常用参数搭配: ls -a 列出目录所有文 ...

  3. Go语言核心36讲(Go语言基础知识三)--学习笔记

    03 | 库源码文件 在我的定义中,库源码文件是不能被直接运行的源码文件,它仅用于存放程序实体,这些程序实体可以被其他代码使用(只要遵从 Go 语言规范的话). 这里的"其他代码" ...

  4. java_web学习(三) eclipse_jsp学习

    1.首先打开eclipse,新建一个Dynamac web project项目文件 2.在WebContent单击右键创建JSP File 3.过程 4.简单的jsp代码 运行结果: 5.导出war文 ...

  5. Linux基础(三)

    一.正文处理命令及tar命令 1.文件合并 cat a.txt b.txt > c.txt 2.打包 归档命令tar可以把多个文件打包成一个文件 如tar cvf test.tar a.txt ...

  6. Linux基础命令(三)

    作业一:1) 将用户信息数据库文件和组信息数据库文件纵向合并为一个文件/1.txt(覆盖) cat /etc/passwd /etc/group >/1.txt 2) 将用户信息数据库文件和用户 ...

  7. linux基础四----samba&&nginx

    一 samba 1环境配置: a.确保linux下防火墙关闭比或开放共享目录权限 iPtables -F b.确保setlinux关闭:setenforce 0 c.配置iP 2安装软件包:yum i ...

  8. Linux基础练习题(三)

    1.显示当前系统上root.fedora或user1用户的默认shell: [root@www ~]# egrep "^(root|fedora|user1)" /etc/pass ...

  9. Html学习(三) 分类学习

    代码: <h1>这是一级分类吗</h1> <h2>这是二级分类吗</h2> <h3>这是三级分类吗 </h3> 效果: 介绍: ...

  10. .linux基础命令三

    一. 两台服务器免密登录: 1. 生成密钥 ssh-keygen的命令手册,通过”man ssh-keygen“命令查看指令: 通过命令”ssh-keygen -t rsa“创建一对密匙,包括公匙和私 ...

随机推荐

  1. 知其所以然~redis的原子性

    原子性 原子性是数据库的事务中的特性.在数据库事务的情景下,原子性指的是:一个事务(transaction)中的所有操作,要么全部完成,要么全部不完成,不会结束在中间某个环节. 对于Redis而言,命 ...

  2. JDBC事务与保存点 JDBC简介(七)

    事务简介 数据库事务(Database Transaction) ,是指作为单个逻辑工作单元执行的一系列操作,要么完全地执行,要么完全地不执行. 事务是必须满足4个条件(ACID) 事务的原子性( A ...

  3. 不能ssh连接ubuntu linux 服务器 secureCRT不能ssh连接服务器 不能远程ssh连接虚拟机的ubuntu linux

    我是用的是secureCRT,远程连接我的虚拟机里面的ubuntu 直接报错,连接不上 1,先分别在windows上ipconfig和ubuntu上ifconfig下 互ping一下,是可以ping通 ...

  4. Java开发笔记(七)强制类型转换的风险

    编码过程中,不但能将数字赋值给某个变量,还能将一个变量赋值给另一个变量.比如下面代码把整型变量changjiang赋值给整型变量longRiver: // 长江的长度为6397千米 int chang ...

  5. 分享一些 Windows 平台上的神器

    下面分享一些 Windows 平台上日常开发使用的软件,有些软件我自认为是神器,可以大大提高效率. 编辑器类软件 IntelliJ IDEA IntelliJ IDEA 内部集成 Java 开发环境, ...

  6. LeetCode 176. 第二高的薪水(MySQL版)

    0.前言 最近刷LeetCode 刷数据库题目 由于数据库课上的是SQL,而MySQL有许多自己的函数的,怕把刚学会的函数忘记 特在此记录! 1.题目 编写一个 SQL 查询,获取 Employee ...

  7. java-自定义数据排序

    导读:由于基本类型的数据都实现了一个共同的接口java.lang.Comparable接口,都实现了该接口下面的compareTo()方法,因此想要利用面向对象实现现实生活中的一些情景再现,比如新闻根 ...

  8. 华为有AI,这场转型战有点大

    华为有AI,这场转型战有点大 https://mp.weixin.qq.com/s/qnUP5cgbNxXcAT82NQARtA 李根 发自 凹非寺 量子位 报道 | 公众号 QbitAI 华为有AI ...

  9. iOS---------- Safe Area Layout Guide before iOS 9.0

    如果你们的项目不做iOS9以下支持就打开main.storyboard    去除Use safe Area Layout 如果不考虑iOS9以下支持就按照下面的步骤 选中控制器,右边面板的Build ...

  10. 单元测试_JUnit常用单元测试注解介绍及代码演示

    JUnit常用单元测试注解介绍及代码演示   by:授客 QQ:1033553122 1. 测试环境 1 2. 基础概念 1 3. 常用Annotation 1 4. 运行环境配置 3 maven配置 ...