Nginx的一些基本功能极速入门

本文主要介绍一些Nginx的最基本功能以及简单配置,但不包括Nginx的安装部署以及实现原理。废话不多,直接开始。

1、静态HTTP服务器

首先,Nginx是一个HTTP服务器,可以将服务器上的静态文件(如HTML、图片)通过HTTP协议展现给客户端。

配置:

server {
	listen 80; # 端口号
	location / {
		root /usr/share/nginx/html; # 静态文件路径
	}
}

2、反向代理服务器

什么是反向代理?

客户端本来可以直接通过HTTP协议访问某网站应用服务器,网站管理员可以在中间加上一个Nginx,客户端请求Nginx,Nginx请求应用服务器,然后将结果返回给客户端,此时Nginx就是反向代理服务器。

配置:

server {
	listen 80;
	location / {
		proxy_pass http://192.168.20.1:8080; # 应用服务器HTTP地址
	}
}

既然服务器可以直接HTTP访问,为什么要在中间加上一个反向代理,不是多此一举吗?反向代理有什么作用?继续往下看,下面的负载均衡、虚拟主机等,都基于反向代理实现,当然反向代理的功能也不仅仅是这些。

3、负载均衡

当网站访问量非常大,网站站长开心赚钱的同时,也摊上事儿了。因为网站越来越慢,一台服务器已经不够用了。于是将同一个应用部署在多台服务器上,将大量用户的请求分配给多台机器处理。同时带来的好处是,其中一台服务器万一挂了,只要还有其他服务器正常运行,就不会影响用户使用。

Nginx可以通过反向代理来实现负载均衡。

配置:

upstream myapp {
	server 192.168.20.1:8080; # 应用服务器1
	server 192.168.20.2:8080; # 应用服务器2
}
server {
	listen 80;
	location / {
		proxy_pass http://myapp;
	}
}

以上配置会将请求轮询分配到应用服务器,也就是一个客户端的多次请求,有可能会由多台不同的服务器处理。可以通过ip-hash的方式,根据客户端ip地址的hash值将请求分配给固定的某一个服务器处理。

配置:

upstream myapp {
	ip_hash; # 根据客户端IP地址Hash值将请求分配给固定的一个服务器处理
	server 192.168.20.1:8080;
	server 192.168.20.2:8080;
}
server {
	listen 80;
	location / {
		proxy_pass http://myapp;
	}
}

另外,服务器的硬件配置可能有好有差,想把大部分请求分配给好的服务器,把少量请求分配给差的服务器,可以通过weight来控制。

配置:

upstream myapp {
	server 192.168.20.1:8080 weight=3; # 该服务器处理3/4请求
	server 192.168.20.2:8080; # weight默认为1,该服务器处理1/4请求
}
server {
	listen 80;
	location / {
		proxy_pass http://myapp;
	}
}

4、虚拟主机

有的网站访问量大,需要负载均衡。然而并不是所有网站都如此出色,有的网站,由于访问量太小,需要节省成本,将多个网站部署在同一台服务器上。

例如将www.aaa.com和www.bbb.com两个网站部署在同一台服务器上,两个域名解析到同一个IP地址,但是用户通过两个域名却可以打开两个完全不同的网站,互相不影响,就像访问两个服务器一样,所以叫两个虚拟主机。

配置:

server {
	listen 80 default_server;
	server_name _;
	return 444; # 过滤其他域名的请求,返回444状态码
}
server {
	listen 80;
	server_name www.aaa.com; # www.aaa.com域名
	location / {
		proxy_pass http://localhost:8080; # 对应端口号8080
	}
}
server {
	listen 80;
	server_name www.bbb.com; # www.bbb.com域名
	location / {
		proxy_pass http://localhost:8081; # 对应端口号8081
	}
}

在服务器8080和8081分别开了一个应用,客户端通过不同的域名访问,根据server_name可以反向代理到对应的应用服务器。

虚拟主机的原理是通过HTTP请求头中的Host是否匹配server_name来实现的,有兴趣的同学可以研究一下HTTP协议。

另外,server_name配置还可以过滤有人恶意将某些域名指向你的主机服务器。

5、FastCGI

Nginx本身不支持PHP等语言,但是它可以通过FastCGI来将请求扔给某些语言或框架处理(例如PHP、Python、Perl)。

server {
	listen 80;
	location ~ \.php$ {
		include fastcgi_params;
		fastcgi_param SCRIPT_FILENAME /PHP文件路径$fastcgi_script_name; # PHP文件路径
		fastcgi_pass 127.0.0.1:9000; # PHP-FPM地址和端口号
		# 另一种方式:fastcgi_pass unix:/var/run/php5-fpm.sock;
	}
}

配置中将.php结尾的请求通过FashCGI交给PHP-FPM处理,PHP-FPM是PHP的一个FastCGI管理器。有关FashCGI可以查阅其他资料,本文不再介绍。

fastcgi_pass和proxy_pass有什么区别?下面一张图带你看明白:

时间: 2024-12-18 19:16:17

Nginx的一些基本功能极速入门的相关文章

Nginx基本功能极速入门

http://xxgblog.com/2015/05/17/nginx-start/ 本文主要介绍一些Nginx的最基本功能以及简单配置,但不包括Nginx的安装部署以及实现原理.废话不多,直接开始. 1.静态HTTP服务器 首先,Nginx是一个HTTP服务器,可以将服务器上的静态文件(如HTML.图片)通过HTTP协议展现给客户端. 配置: 123456 server { listen 80; # 端口号 location / { root /usr/share/nginx/html; #

SparkSQL极速入门 整合Kudu实现广告业务数据分析

第1章 课程介绍&学习指南本章会对这门课程进行说明并进行学习方法介绍. 第2章 为什么要学SparkSpark作为近几年最火爆的大数据处理技术,是成为大数据工程师必备的技能之一.本章节将从如下几个方面对Spark进行一个宏观上的介绍:Spark产生背景.特性.环境部署.Spark与Hadoop的对比.Spark开发语言及运行模式等. 第3章 Spark SQL快速入门Spark SQL面世已来,深受小伙伴们的喜爱,继续为Spark用户提供高性能SQL on Hadoop解决方案,还为Spark带

AppCan开发极速入门,从0开始!

由于种种原因而不能参加AppCan线下培训,遗憾! 不喜欢视频教程的单机节奏,苦恼! AppCan线上直播课堂,冲破时间.地域.空间限制,从0开始,教你如何极速入门AppCan移动开发! 本次线上直播内容以插件的使用.项目实战为主,将线下开发者培训课程进行精简,高效的呈现给大家, 6小时即可让你快速上手移动APP开发! PS:直播课堂中老师会按需求量进行大众问题的答疑,对课程有疑问的同学请将问题统统抛过来! 1.开播时间 3月24 日-3月25日(14:30-17:30) 2.必备知识 1).H

使用Nginx的proxy_cache缓存功能取代Squid[原创]

使用Nginx的proxy_cache缓存功能取代Squid[原创] [文章作者:张宴 本文版本:v1.2 最后修改:2009.01.12 转载请注明原文链接:http://blog.zyan.cc/nginx_cache/] Nginx从0.7.48版本开始,支持了类似Squid的缓存功能.这个缓存是把URL及相关组合当作Key,用md5编码哈希后保存在硬盘上,所以它可以支持任意URL链接,同时也支持404/301/302这样的非200状态码.虽然目前官方的Nginx Web缓存服务只能为指定

nginx的URL重定向功能

nginx的重定向和nginx的反向代理的原理还是有区别的.当把nginx用作URL重定向功能时,当客户端访问网站时,nginx会自动把网站链接跳转到指定的地址,在客户端浏览器地址栏会发现明明访问的是A域名(ip),却显示出了访问B域名(ip),也就是nginx把收到的客户端的请求后把客户端要请求的信息对应的服务器地址发给客户端,让客户端自己去获取,而nginx会返回302正确信息,这就是nginx的URL的重定向功能(rewrite):而nginx作为反向代理服务器时,当浏览器访问网站时,ng

Nginx开启gzip压缩功能

在Nginx安装完成之后,我们可以开启Gzip压缩功能,这里Nginx默认只能对text/html类型的文件进行压缩.下面的指令为开启Gzip的指令: gzip on; gzip_http_version 1.0; gzip_disable "MSIE [1-6]."; gzip_types text/plain application/x-javascript text/css text/javascript; 如果要能够是Nginx开启图片压缩功能,在配置文件中添加如下代码: gz

Nginx 支持 WAF 防护功能实战

WAF(Web Application Firewall),中文名称叫做“Web应用防火墙 WAF的定义是这样的:Web应用防火墙是通过执行一系列针对HTTP/HTTPS的安全策略来专门为Web应用提供保护的一款产品,通过从上面对WAF的定义中,我们可以很清晰地了解到:WAF是一种工作在应用层的.通过特定的安全策略来专门为Web应用提供安全防护的产品.用途: 用于过滤post,get,cookie方式常见的web攻击 防止sql注入,本地包含,部分溢出,fuzzing测试,xss,SSRF等we

网络编程懒人入门(六):史上最通俗的集线器、交换机、路由器功能原理入门

1.前言 即时通讯网整理了大量的网络编程类基础文章和资料,包括<TCP/IP协议 卷1>.<[通俗易懂]深入理解TCP协议>系列.<网络编程懒人入门>系列.<不为人知的网络编程>系列.<P2P技术详解>系列.<高性能网络编程>系列.甚至还有图文并貌+实战代码的<NIO框架入门>等,目的是帮助即时通讯类应用的开发者,至少要掌握网络编程最基本的原理,所谓知其然更要知其所以然.尤其现在移动网络大行其道的时代,在网络环境如此复杂的

《Python黑客编程之极速入门》正式开课

玄魂 玄魂工作室 今天 之前开启了一个<Python黑客编程>的系列,后来中断了,内容当时设置的比较宽,不太适合入门.现在将其拆分成两个系列<Python黑客编程之极速入门>和<Python黑客编程之网络安全>,以便初学者有一个入门和提升的过程. 我们首先开启的是<Python黑客编程之极速入门>,考虑到学习质量的保证问题, 这次采用的是培训的方式,图文教程+课后练习+答疑+案例介绍+扩展阅读. 培训目前只面向我们知识星球内部成员(加入星球自动享受该课程权益