1、静态HTTP服务器
首先,Nginx是一个HTTP服务器,可以将服务器上的静态文件(如HTML,图片)通过协议层展示给客户端,配置:
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地址 }}问题:为什么要加一个反向代理,直接访问服务器不行吗?不就是多此一举?
解答:
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、虚拟主机
有的网站访问量大,需要负载均衡。然而并不是所有的网站都是这样的,有的网站访问量小,需要节省成本,将多个网站部署到同一台服务器上。
将2个网站部署到同一台服务器上,2个域名解析到同一个ip地址,但是客户端通过2个域名却可以打开2个完全不同的网站,互补影响,就像2台服务器一样,可以叫2个虚拟主机。配置:
有的
有的网站访问量大,需要负载均衡。然而并不是所有网站都如此出色,有的网站,由于访问量太小,需要节省成本,将多个网站部署在同一台服务器上。
例如将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 }}虚拟主机的原理就是通过HTTP请求头的post是否匹配server_name来实现的,
server_name配置还可以过滤有人恶意将某些域名指向你的服务器。
5、fastCGI
Nginx本身不支持PHP等语言,但是它可以通过fastCGI来将请求扔给某些语言或者框架处理。配置:
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结尾的请求通过FastCGI交给PHP-FPM处理,php-FPM是PHP的一个FastCGI管理器。
fastcgi_past和proxy_past的区别,如图所示:

有的
有的网站访问量大,需要负载均衡。然而并不是所有网站都如此出色,有的网站,由于访问量太小,需要节省成本,将多个网站部署在同一台服务器上。
例如将www.aaa.com和www.bbb.com两个网站部署在同一台服务器上,两个域名解析到同一个IP地址,但是用户通过两个域名却可以打开两个完全不同的网站,互相不影响,就像访问两个服务器一样,所以叫两个虚拟主机。
配置:
本文介绍了Nginx作为高性能Web服务器的主要功能,包括静态文件服务、反向代理、负载均衡、虚拟主机及FastCGI集成等,并详细阐述了各功能的配置方法。
1042

被折叠的 条评论
为什么被折叠?



