本文主要介绍 Nginx中如何配置 http server,负载均衡(反向代理)。
Nginx是一个开源的、高性能的、稳定的、简单的、功能丰富的HTTP和反向代理服务器,也可以用作IMAP/POP3/SMTP代理服务器。它使用了异步事件驱动的架构,可以支持高并发连接。
Nginx的主要功能包括:
与Nginx类似的软件主要包括以下几种:
以上这些软件都可以作为Web服务器使用,但各自的特性和优势不同,需要根据实际需求选择合适的软件。
在Nginx中,配置HTTP服务器主要是通过编辑Nginx的配置文件,通常是nginx.conf。
以下是一个基本的HTTP服务器配置示例:
http {
server {
listen 80; # 监听80端口
server_name example.com; # 设置服务器名称
location / {
root /var/www/html; # 设置网站根目录
index index.html index.htm; # 设置默认首页
}
# 处理错误页面
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root /var/www/html;
}
}
}
以上配置表示,Nginx会监听80端口,处理来自example.com
的请求。
当请求的URL路径为/
(即网站的根路径)时,Nginx会在/var/www/html
目录下查找index.html
或index.htm
文件并返回。如果发生500、502、503或504错误,Nginx会返回/var/www/html/50x.html
文件的内容。
以上只是一个基本的配置示例,实际上Nginx的配置可以非常复杂,可以配置反向代理、负载均衡、URL重写等高级功能。具体的配置方法需要根据实际需求进行。
接着,再看下,如何配置多个http server。
在Nginx中,可以在配置文件中定义多个server块来配置多个HTTP服务器。
每个server块代表一个虚拟主机,可以监听不同的端口,或者处理不同的域名。
以下是一个配置多个HTTP服务器的示例:
http {
# 第一个HTTP服务器
server {
listen 80;
server_name example1.com;
location / {
root /var/www/example1;
index index.html index.htm;
}
}
# 第二个HTTP服务器
server {
listen 8080;
server_name example2.com;
location / {
root /var/www/example2;
index index.html index.htm;
}
}
}
以上配置表示,Nginx会监听80, 8080端口,处理来自example1.com
和example2.com
的请求。
当请求的URL路径为/
时,如果请求的主机名为example1.com
,Nginx会在/var/www/example1
目录下查找index.html
或index.htm
文件并返回;
如果请求的主机名为example2.com
,Nginx会在/var/www/example2
目录下查找index.html
或index.htm
文件并返回。
Nginx支持以下几种负载均衡方式:
以上负载均衡方式中,轮询、权重和IP Hash是Nginx内置支持的,最少连接和URL Hash需要使用Nginx的第三方模块,如ngx_http_upstream_least_conn_module
和ngx_http_upstream_hash_module
。
在Nginx中,配置负载均衡主要是通过upstream模块和proxy_pass指令实现的。以下是一个基本的负载均衡配置示例:
http {
upstream backend {
server backend1.example.com;
server backend2.example.com;
}
server {
listen 80;
server_name example.com;
location / {
proxy_pass http://backend; # 将请求转发到upstream定义的后端服务器
}
}
}
以上配置表示,Nginx会监听80端口,处理来自example.com的请求。
当请求的URL路径为/(即网站的根路径)时,Nginx会将请求轮询地转发到backend1.example.com
和backend2.example.com
。
除了基本的轮询负载均衡,Nginx还支持其他几种负载均衡方式,例如权重、IP Hash等。
配置基于权重的负载均衡可以通过在upstream模块中为每个server指令添加weight参数来实现。
以下是一个基于权重的负载均衡配置示例:
http {
upstream backend {
server backend1.example.com weight=3;
server backend2.example.com;
}
server {
listen 80;
server_name example.com;
location / {
proxy_pass http://backend; # 将请求转发到upstream定义的后端服务器
}
}
}
以上配置表示,Nginx会监听80端口,处理来自example.com
的请求。
当请求的URL路径为/
(即网站的根路径)时,Nginx会将请求转发到backend定义的后端服务器。这些服务器会按照权重的方式进行负载均衡,backend1.example.com的
权重为3,backend2.example.com
的权重为1(默认值),因此backend1.example.com
会接收到更多的请求。
以上,本文主要介绍了 Nginx中配置 http server,负载均衡(反向代理)的基本方式。