Nginx配置负载均衡及http重定向https

Nginx是一种轻量级、高性能的http和反向代理服务器。由于它的稳定性、占用资源少、配置简单,所以大多数企业都在使用它。

既然有反向代理,那么肯定也有正向代理了,什么是正向代理和反向代理呢?详见 正向代理和反向代理

Nginx的重定向配置

将默认的配置文件找到如下代码并修改。

1
2
3
4
server {
listen 80; # 监听80端口
return 301 https://www.yuhechu.com$request_uri; # 跳转到https
}

上面的配置很简单,监听系统80端口,然后将http请求重定向到https端口上(也就是443端口)。

Nginx的负载均衡配置

你可以重新定义一个.conf文件,这个文件比如是监听443端口的配置文件。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
upstream local_http {
# ip_hash; # 如果开启,会根据请求的ip进行分配
# 将请求转发到下面两个端口,默认权重是1。
server localhost:8080 weight=2;
server localhost:8081 weight=1;
}
server {
listen 443;# 监听443端口
server_name www.yuhechu.com; # 访问该端口的域名

# 证书配置...

location / {
proxy_pass http://local_http; # 将请求代理给local_http这个变量名
add_header Access-Control-Allow-Origin *; # 允许所有ip地址进行访问
}

}

上述配置首先先找到local_http这个变量,其中定义了两台服务地址,upstream 会按照默认方式进行负载,每个请求按权重逐一分配到不同的后端服务器,如果后端服务器down掉,能自动剔除。我们可以给这两台服务配置权重,上面的配置会使8080端口的访问率比8081端口高两倍。

假如开启ip_hash,那么每个请求会按访问ip的hash结果进行分配,这样每个访客固定访问一个后端服务器,可以解决session的问题。