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. [Leetcode]237. Delete Node in a Linked List -David_Lin

    Write a function to delete a node (except the tail) in a singly linked list, given only access to th ...

  2. 如何零基础开始自学Python编程

    转载——原作者:赛门喵 链接:https://www.zhihu.com/question/29138020/answer/141170242 0. 明确目标 我是真正零基础开始学Python的,从一 ...

  3. Asp.Net SignalR Hub中的上下文对象

    Hub中的 Context 使用了集线器后,会发现对比持久连接类少了OnConnectioned这样的事件,事实上是有的.需要我们去override .这下似乎发现了什么问题,记得持久连接类中有con ...

  4. PC逆向之代码还原技术,第五讲汇编中乘法的代码还原

    目录 PC逆向之代码还原技术,第五讲汇编中乘法的代码还原 一丶简介乘法指令 1.乘法指令 2.代码还原注意问题 二丶乘法的汇编代码产生的格式 1.高级代码观看 2.乘法的汇编代码还原. 三丶乘法总结 ...

  5. SQL 中的一些小巧但常用的关键字

    前面的几篇文章中,我们大体上介绍了 SQL 中基本的创建.查询语句,甚至也学习了相对复杂的连接查询和子查询,这些基本功相信你也一定掌握的不错,那么本篇则着重介绍几个技巧方面的关键字,能够让你更快更有效 ...

  6. grafana使用详解--技术流ken

    grafana简介 Grafana是一个跨平台的开源的度量分析和可视化工具,可以通过将采集的数据查询然后可视化的展示,并及时通知.它主要有以下六大特点: 1.展示方式:快速灵活的客户端图表,面板插件有 ...

  7. 杭电ACM2016--数据的交换输出

    数据的交换输出 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)Total Sub ...

  8. [前端]css前端样式的模块化

    css样式文件结构( 模块划分的单入口 ) common|_ _ _ _ _ _reset.css|_ _ _ _ _ _common.css 公用样式 libs|_ _ _ _ _ _bootstr ...

  9. Java开发笔记(七十八)面向对象的后门——反射

    作为一门面向对象的编程语言,Java认为一切皆是对象,每个对象都能归属于某个类,甚至每个类均可提取出一种特殊的类型,即Class类型.早在前面介绍多态的时候,就提到每个类都存在独一无二的基因,通过比较 ...

  10. 如何打开iPhone 中的heic格式照片

    苹果手机拍出来的heic照片相比常见的格式占存更小,但是在安卓和电脑上这种格式无法直接查看,那怎么在电脑上查看呢,需要将其转换格式就可以查看,关于如何打开iPhone 中的heic格式照片,下面即将为 ...