静态HTTP服务器Nginx的基本功能和简单配置介绍
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 是一个反向代理。
反向代理
配置:
1 2 3 4 5 6 | server {
listen 80;
location / {
proxy_pass http://192.168.20.1:8080; # 应用服务器HTTP地址
}
} |
既然可以通过 HTTP 直接访问服务器,为什么中间要添加反向代理呢?这不是没有必要吗?反向代理有什么作用?继续往下看,下面的负载均衡和虚拟主机都是基于反向代理实现的。当然,反向代理的功能不限于这些。
3。负载均衡
当网站流量很高的时候,站长网站在赚钱高兴的同时,也陷入了困境。随着网站变得越来越慢,一台服务器已经不够了。因此同一个应用程序部署在多台服务器上,多个用户的请求分布在多台机器上进行处理。同时这样做的好处是,如果其中一台服务器崩溃了,只要其他服务器正常工作,就不会影响用户的使用。
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 有什么区别?下图帮你理解:
![]()
版权声明
本文仅代表作者观点,不代表Code前端网立场。
本文系作者Code前端网发表,如需转载,请注明页面地址。
code前端网