nginx实战教程
大纲
为了让大家更快的学会,该博客中的内容录制成了视频课程:马上在线学习

1.什么是nginx

Nginx是一款高性能的http 服务器/反向代理服务器及电子邮件(IMAP/POP3)代理服务器。
由俄罗斯的程序设计师Igor Sysoev所开发,官方测试nginx能够支支撑5万并发链接(tomcat 500),并且cpu、内存等资源消耗却非常低,运行非常稳定。
2.应用场景
1、http服务器。Nginx是一个http服务可以独立提供http服务。可以做网页静态服务器。
2、虚拟主机。可以实现在一台服务器虚拟出多个网站。例如个人网站使用的虚拟主机。
3、反向代理,负载均衡。当网站的访问量达到一定程度后,单台服务器不能满足用户的请求时,需要用多台服务器集群可以使用nginx做反向代理。
并且多台服务器可以平均分担负载,不会因为某台服务器负载高宕机而某台服务器闲置的情况。
3.nginx安装\启动\访问
3.1.安装环境准备
需要安装gcc的环境(就如同tomcat要运行需要jdk环境一样) gcc环境安装 sudo apt-get update

sudo apt-get install gcc

安装完了可以执行
gcc --v
的命令来查看版本,输出如下:
安装Nginx时需要先安装依赖包
首先使用dpkg命令查看自己需要的软件是否安装。
例如查看zlib是否安装:
root@ubuntu:/usr/java/nginx-1.8.0# dpkg -l | grep zlib

解决依赖包openssl安装,命令:
sudo apt-get install openssl libssl-dev
解决依赖包pcre安装,命令:
sudo apt-get install libpcre3 libpcre3-dev
解决依赖包zlib安装,命令:
sudo apt-get install zlib1g-dev
3.2.安装步骤
下载nginx:
官方网站:
使用的版本是1.8.0版本。

第一步:把nginx-1.8.0.tar.gz上传到linux系统
第二步:解压缩
[root@localhost ~]# tar zxf nginx-1.8.0.tar.gz
第三步:使用configure命令创建一makeFile文件。
./configure \
--prefix=/usr/local/nginx \
--pid-path=/var/run/nginx/nginx.pid \
--lock-path=/var/lock/nginx.lock \
--error-log-path=/var/log/nginx/error.log \
--http-log-path=/var/log/nginx/access.log \
--with-http_gzip_static_module \
--http-client-body-temp-path=/var/temp/nginx/client \
--http-proxy-temp-path=/var/temp/nginx/proxy \
--http-fastcgi-temp-path=/var/temp/nginx/fastcgi \
--http-uwsgi-temp-path=/var/temp/nginx/uwsgi \
--http-scgi-temp-path=/var/temp/nginx/scgi
注意:启动nginx之前,上边将临时文件目录指定为/var/temp/nginx,需要在/var下创建temp及nginx目录
[root@localhost sbin]# mkdir /var/temp/nginx/client -p
第四步:make
第五步:make install

3.3.启动
进入sbin目录
root@ubuntu:/usr/local/nginx/sbin# ./nginx
检查是否启动:

关闭方式一:nginx:
root@ubuntu:/usr/local/nginx/sbin# ./nginx -s stop
关闭方式二:
root@ubuntu:/usr/local/nginx/sbin# ./nginx -s quit
重启nginx:
1、先关闭后启动。
2、刷新配置文件:
root@ubuntu:/usr/local/nginx/sbin# ./nginx -s reload
3.4.访问
192.168.25.106:80
默认是80端口。
注意:是否关闭防火墙。

4.配置虚拟主机
就是在一台服务器启动多个网站。
如何区分不同的网站:
1、域名不同
2、端口不同
4.1.通过端口区分不同虚拟主机
Nginx的配置文件:
/usr/local/nginx/conf/nginx.conf

可以配置多个server,配置了多个虚拟主机。
复制一个目录: root@ubuntu:/usr/local/nginx# cp html/ html81 -r
添加虚拟主机:
#测试使用81端口,对应的根文件为:html81
server {
listen 81;
server_name localhost;
location / {
root html81;
index index.html index.htm;
}
}
重新启动服务器
root@ubuntu:/usr/local/nginx/sbin# ./nginx -s stop
root@ubuntu:/usr/local/nginx/sbin# ./nginx
分别访问80端口和81端口
192.168.25.106:80
192.168.25.106:81
4.2.通过域名区分不通虚拟主机
域名就是网站。
Dns服务器:把域名解析为ip地址。保存的就是域名和ip的映射关系。
一级域名:
Baidu.com
二级域名:
Item.baidu.com
三级域名:
1.Image.baidu.com
一个域名对应一个ip地址,一个ip地址可以被多个域名绑定。
本地测试可以修改hosts文件。
修改window的hosts文件:(C:\Windows\System32\drivers\etc)
可以配置域名和ip的映射关系,如果hosts文件中配置了域名和ip的对应关系,不需要走dns服务器。
下载小工具:https://pc.qq.com/search.html#!keyword=SwitchHosts

4.3.nginx的域名配置
复制taobao目录: root@ubuntu:/usr/local/nginx# cp html/ html-taobao -r
复制wfd360目录: root@ubuntu:/usr/local/nginx# cp html/ html-wfd360 -r
添加如下两个节点
#测试使用都是用域名配置的80端口 www.taobao.com
server {
listen 80;
server_name www.taobao.com;
location / {
root html-taobao;
index index.html index.htm;
}
}
#测试使用都是用域名配置的80端口 www.wfd360.com
server {
listen 80;
server_name www.wfd360.com;
location / {
root html-wfd360;
index index.html index.htm;
}
}
域名的配置:
192.168.25.128 www.taobao.com
192.168.25.128 www.wfd360.com
5.反向代理
5.1.什么是反向代理
正向代理
正向代理类似一个跳板机,代理访问外部资源。

举个例子:
我是一个用户,我访问不了某网站,但是我能访问一个代理服务器,这个代理服务器呢,他能访问那个我不能访问的网站,于是我先连上代理服务器,告诉他我需要那个无法访问网站的内容,代理服务器去取回来,然后返回给我。从网站的角度,只在代理服务器来取内容的时候有一次记录,有时候并不知道是用户的请求,也隐藏了用户的资料,这取决于代理告不告诉网站。
反向代理(Reverse Proxy)
实际运行方式是指以代理服务器来接受internet上的连接请求,然后将请求转发给内部网络上的服务器,并将从服务器上得到的结果返回给internet上请求连接的客户端,此时代理服务器对外就表现为一个服务器。


5.2.nginx实现反向代理
需求:
两个域名指向同一台nginx服务器,用户访问不同的域名显示不同的网页内容。
两个域名是www.wfd360.com和www.wfd361.com
nginx服务器使用虚拟机192.168.25.106
第一步:安装两个tomcat,分别运行在8180和8280端口。

修改首页,便于区分
第二步:启动两个tomcat。
第三步:反向代理服务器的配置
#反向代理服务器的配置
upstream tomcat2 {
server 192.168.25.106:8280; }
server {
listen 80;
server_name www.wfd362.com;
location / {
# root html-wfd360;
proxy_pass http://tomcat2;
index index.html index.htm;
}
}
upstream tomcat1 {
server 192.168.25.106:8180;
}
server {
listen 80;
server_name www.wfd361.com;
location / {
proxy_pass http://tomcat1;
index index.html index.htm;
}
}
第四步:nginx重新加载配置文件
第五步:配置域名
在hosts文件中添加域名和ip的映射关系
192.168.25.106 www.wfd360.com
192.168.25.106 www.wfd361.com
第六步:访问测试
5.3.负载均衡
如果一个服务由多条服务器提供,需要把负载分配到不同的服务器处理,需要负载均衡。
upstream tomcat2 {
server 192.168.25.106:8180;
server 192.168.25.106:8280;
}
可以根据服务器的实际情况调整服务器权重。权重越高分配的请求越多,权重越低,请求越少。默认是都是1
upstream tomcat2 {
server 192.168.25.106:8180;
server 192.168.25.106:8280 weight=2;
}
6.课程资料
1.nginx中文手册:https://www.nginx.cn/nginx-how-to
2.为了让大家更快的学会,该博客中的内容录制成了视频课程:马上在线学习
完美!
nginx实战教程的更多相关文章
- Nginx教程(一) Nginx入门教程
Nginx教程(一) Nginx入门教程 1 Nginx入门教程 Nginx是一款轻量级的Web服务器/反向代理服务器及电子邮件(IMAP/POP3)代理服务器,并在一个BSD-like协议下发行.由 ...
- nginx入门教程
nginx入门教程 一.概述 什么是nginx? Nginx (engine x) 是一款轻量级的Web 服务器 .反向代理服务器及电子邮件(IMAP/POP3)代理服务器. 什么是反向 ...
- Nginx入门教程(转)
原文:https://www.cnblogs.com/qdhxhz/p/8910174.html nginx入门教程 一.概述 什么是nginx? Nginx (engine x) 是一款轻 ...
- Nginx教程(一) Nginx入门教程 (转)
1 Nginx入门教程 Nginx是一款轻量级的Web服务器/反向代理服务器及电子邮件(IMAP/POP3)代理服务器,并在一个BSD-like协议下发行.由俄罗斯的程序设计师IgorSysoev所开 ...
- 【ASP.NET实战教程】ASP.NET实战教程大集合,各种项目实战集合
[ASP.NET实战教程]ASP.NET实战教程大集合,各种项目实战集合,希望大家可以好好学习教程中,有的比较老了,但是一直很经典!!!!论坛中很多小伙伴说.net没有实战教程学习,所以小编连夜搜集整 ...
- 【转】mybatis实战教程(mybatis in action),mybatis入门到精通
MyBatis 目录(?)[-] mybatis实战教程mybatis in action之一开发环境搭建 mybatis实战教程mybatis in action之二以接口的方式编程 mybatis ...
- NDK-JNI实战教程(二) JNI官方中文资料
声明 设计概述 JNI接口函数和指针 加载和链接本地方法 解析本地方法名 本地方法的参数 引用Java对象 全局和局部引用 实现局部引用 访问Java对象 访问基本类型数组 访问域和方法 报告编程错误 ...
- mybatis实战教程(mybatis in action),mybatis入门到精通
转自:http://www.yihaomen.com/article/java/302.htm (读者注:其实这个应该叫做很基础的入门一下下,如果你看过hibernate了那这个就非常的简单) (再加 ...
- ActiveReports 9实战教程(3): 图文并茂的报表形式
基于上面2节内容,我们搭建了AR9的开发环境,配置好了数据源.在本节,我们以官方提供的3个中文图文并茂的报表来展示AR9的功能,并通过实战的方式一一分享. 以往做报表相关的工作时,最害怕的是报表的UI ...
- 《软件性能测试与LoadRunner实战教程》新书上市
作者前三本书<软件性能测试与LoadRunner实战>.<精通软件性能测试与LoadRunner实战>和<精通软件性能测试与LoadRunner最佳实战>面市后,受 ...
随机推荐
- BC6-牛牛的第二个整数
题目描述 牛牛从键盘上输入三个整数,并尝试在屏幕上显示第二个整数. 输入描述 一行输入 3 个整数,用空格隔开. 输出描述 请输出第二个整数的值. 示例 1 输入:1 2 3 输出:2 解题思路 方案 ...
- elasticsearch-head插件安装及启动,关闭命令
启动插件 /elasticsearch-head目录npm run start启动elasticsearch 不能使用root账号 切换账号:su es./bin/elasticsearch 打印日志 ...
- xshell和xftp下载免费版本方法
下载地址 https://www.xshell.com/zh/free-for-home-school/ 填写邮箱和用户名,会发送下载邮件到邮箱,然后根据邮箱中的下载地址来下载安装.
- Asp.net Core Flurl.Http 结合IHttpClientFactory管理HttpClient生命周期
Asp.net Core, 在我用过的多种Http REST 客户端: RestSharp WebApiClient Refit Flurl 中,Flurl可以说是最符合我口味的,用起来那可真的顺滑无 ...
- HDU1010第一道DFS
DFS就是深度搜索算法....感觉就像破案一样.... #include<iostream> #include<cstdio> #include<cstring> ...
- JSONPATH-阿里和jayway的实现测试
业务业务的需要,所以想找一个从对象中获取属性的工具. 搜了搜发现由阿里和jayway的实现,又花费了一些时间了解和练习,总结了一些要点: 阿里的可能快一些,但考虑到完备性,也许选择jayway更好一些 ...
- SpringBoot可视化接口开发工具magic-api
magic-api简介 magic-api是一个基于Java的接口快速开发框架,编写接口将通过magic-api提供的UI界面完成,自动映射为HTTP接口,无需定义Controller.Service ...
- C# 获取指定年月的第一天和最后一天、获取本月的第一天和最后一天、获取当前日期的星期几等
•获取指定年月的第一天 public static DateTime GetCurMonthFirstDay(string year,string mon) { DateTime AssemblDat ...
- IPv6、双栈与隧道
双栈策略 实现IPv6结点与IPv4结点互通的最直接的方式是在IPv6结点中加入IPv4协议栈.具有双协议栈的结点称作"IPv6/v4结点",这些结点既可以收发IPv4分组,也可以 ...
- oeasy教您玩转vim - 51 - # 读写文件
读写文件 回忆上节课内容 命令行的光标控制 方向键️️️️️可以控制左右移动 shift+️️️️️按照word左右移动光标 ctrl+b 到开头begin ctrl+e 到结尾end ctrl+w ...