Code前端首页关于Code前端联系我们

静态HTTP服务器Nginx的基本功能和简单配置介绍

terry 2年前 (2023-09-28) 阅读数 54 #未命名

Nginx的一些基本功能和最简单的配置,但不包括Nginx的安装、部署和实现原理。话不多说,让我们开始吧。

1。静态HTTP服务器

首先,Nginx是一个HTTP服务器,可以通过HTTP协议向客户端显示服务器上的静态文件(例如HTML和图像)。

成分:

1
2
3
4
5
6
server {
	listen 80; # 端口号
	location / {
		root /usr/share/nginx/html; # 静态文件路径
	}
}

2。反向代理

什么是反向代理?

客户可以通过HTTP协议直接访问网站的应用服务器。如果网站管理员在中间添加Nginx,则客户端请求Nginx,Nginx请求应用服务器,然后将结果返回给客户端。目前,Nginx 是一个反向代理。
静态HTTP服务器Nginx基本功能及简单配置入门反向代理
配置:

1
2
3
4
5
6
server {
	listen 80;
	location / {
		proxy_pass http://192.168.20.1:8080; # 应用服务器HTTP地址
	}
}

既然可以通过 HTTP 直接访问服务器,为什么中间要添加反向代理呢?这不是没有必要吗?反向代理有什么作用?继续往下看,下面的负载均衡和虚拟主机都是基于反向代理实现的。当然,反向代理的功能不限于这些。

3。负载均衡

当网站流量很高的时候,站长网站在赚钱高兴的同时,也陷入了困境。随着网站变得越来越慢,一台服务器已经不够了。因此同一个应用程序部署在多台服务器上,多个用户的请求分布在多台机器上进行处理。同时这样做的好处是,如果其中一台服务器崩溃了,只要其他服务器正常工作,就不会影响用户的使用。

Nginx 可以通过反向代理实现负载均衡。
静态HTTP服务器Nginx基本功能及简单配置入门 负载平衡
组件:

1
2
3
4
5
6
7
8
9
10
upstream myapp {
	server 192.168.20.1:8080; # 应用服务器1
	server 192.168.20.2:8080; # 应用服务器2
}
server {
	listen 80;
	location / {
		proxy_pass http://myapp;
	}
}

4。虚拟主机

的网站流量很大,需要负载均衡。然而,并非所有网站都那么出色。有些网站因为访问量太低,需要在同一台服务器上部署多个网站来节省成本。

例如,如果两个网站www.aaa.com和www.bbb.com部署在同一台服务器上,两个域都会分配相同的IP地址,但用户可以通过这两个网站访问两个完全不同的网站。域名。站点之间互不影响,就像访问两台服务器一样,因此称为两台虚拟服务器。

规格:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
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)发送请求。

1
2
3
4
5
6
7
8
9
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 有什么区别?下图帮你理解:
静态HTTP服务器Nginx基本功能及简单配置入门

版权声明

本文仅代表作者观点,不代表Code前端网立场。
本文系作者Code前端网发表,如需转载,请注明页面地址。

热门