Nginx (engine x) 是一个高性能的HTTP和反向代理服务器,同时也提供了IMAP/POP3/SMTP服务。
nginx.conf配置文件
一般我们不直接在该文件里配置我们的代理,转而使用include的方式,把我们的配置独立成另一个配置文件。
http {
...
include yumproxy.conf;//添加自己的配置文件
}
作为http服务器
- 访问图片服务器,加载图片,访问静态资源,前后端分离
正向代理配置
server {
resolver 192.168.0.1;
location / {
proxy_pass http://$http_host$request_uri;
}
}
resolver表示DNS服务器
location表示匹配用户访问的资源,并作进一步转交和处理,可用正则表达式匹配
proxy_pass表示需要代理的地址
$http_host 表示用户访问资源的主机部分
$request_uri 表示用户访问资源的URI部分。
可以不设置监听端口号,nginx默认监听80端口,除非你要修改监听端口,可以用listen字段指定。
可以看出,对于正向代理,只是对用户的访问进行一个转发,不做其他处理。
正向代理作用
突破访问限制:科学上网
提高访问速度
隐藏客户端真实ip
反向代理配置
server {
server_name www.baidu.com;
location / {
proxy_pass http://www.baidu.com/;
}
}
其中,server_name字段用于匹配用户访问资源的主机名称。proxy_pass字段同样表示转交的访问。
与正向代理不同,反向代理是指定了特定的网址。其实也就是限定了访问的对象。指定用户访问www.baidu.com时,只能去百度。如果你把proxy_pass的网址替换为新浪的,那就会出现用户明明要访问百度,却跑到新浪去了。这就是代理劫持了。另外,server_name可以匹配多个主机名,用空格分开即可,也可以用正则表达式匹配主机名。
但是特别要注意一点,对于没有匹配到的访问,nginx会默认走第一条server配置,所以一般我们将第一条server设置为阻止页面。
但是这明显不是nginx该考虑的。因为nginx的优势不在于控制访问,相比之下,squid的ACL才是更明智的选择
反向代理用途
- 隐藏服务器真实ip
- 可以做负载均衡
负载均衡配置
负载均衡(Load Balance)其意思就是分摊到多个操作单元上进行执行
应用程序以集群方式部署,我们需要采取负载均衡
#设定负载均衡的服务器列表
upstream load_balance_server {
#weigth参数表示权值,权值越高被分配到的几率越大
#默认 轮询
#server 127.0.0.1:8081;
#server 127.0.0.1:8082;
#server 127.0.0.1:8083;
#weight(权重方式)
server 192.168.1.11:80 weight=5;
server 192.168.1.12:80 weight=1;
server 192.168.1.13:80 weight=6;
}
简单配置
server {
listen 80;
server_name manage.jt.com;
location / {
proxy_pass http://load_balance_server;
}
}
复杂配置
#HTTP服务器
server {
#侦听80端口
listen 80;
#定义使用www.xx.com访问
server_name www.helloworld.com;
#对所有请求进行负载均衡请求
location / {
root /root; #定义服务器的默认网站根目录位置
index index.html index.htm; #定义首页索引文件的名称
proxy_pass http://load_balance_server ;#请求转向load_balance_server 定义的服务器列表
#以下是一些反向代理的配置(可选择性配置)
#proxy_redirect off;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
#后端的Web服务器可以通过X-Forwarded-For获取用户真实IP
proxy_set_header X-Forwarded-For $remote_addr;
proxy_connect_timeout 90; #nginx跟后端服务器连接超时时间(代理连接超时)
proxy_send_timeout 90; #后端服务器数据回传时间(代理发送超时)
proxy_read_timeout 90; #连接成功后,后端服务器响应时间(代理接收超时)
proxy_buffer_size 4k; #设置代理服务器(nginx)保存用户头信息的缓冲区大小
proxy_buffers 4 32k; #proxy_buffers缓冲区,网页平均在32k以下的话,这样设置
proxy_busy_buffers_size 64k; #高负荷下缓冲大小(proxy_buffers*2)
proxy_temp_file_write_size 64k; #设定缓存文件夹大小,大于这个值,将从upstream服务器传
client_max_body_size 10m; #允许客户端请求的最大单文件字节数
client_body_buffer_size 128k; #缓冲区代理缓冲用户端请求的最大字节数
}
}
常用配置属性
down属性:标识宕机,如果服务器宕机,或者该服务器不想为用户继续提供服务,则可以采用down属性进行标识
nginx访问规则:如果nginx访问的服务器不能正常响应,则等待超时后,访问新的服务器
upstream load_balance_server {
server 192.168.1.11:80 down;
server 192.168.1.12:80;
server 192.168.1.13:80;
}
backup:备用服务,默认不使用,只有在服务器全部宕机的时候,才启用
upstream load_balance_server {
server 192.168.1.11:80 backup;
server 192.168.1.12:80;
server 192.168.1.13:80;
}
tomcat高可用配置(简单配置)
高可用: 当服务器发生故障时,通过某种机制可以自动的实现故障的迁移,从而使得用户不受任何的影响.
upstream load_balance_server {
说明:max_fails 表示失败次数,在规定的fail_timeout的时间范围之内,如果检测服务器失败则在60秒内不会将请求发往这台tomcat.
60秒过后会再次检测.
server 192.168.1.11:80 max_fails=1 fail_timeout=60s;
server 192.168.1.12:80 max_fails=1 fail_timeout=60s;
server 192.168.1.13:80 max_fails=1 fail_timeout=60s;
}
目前Nginx的upstream模块支持6种方式的负载均衡策略(算法):轮询(默认方式)、weight(权重方式)、ip_hash(依据ip分配方式)、least_conn(最少连接方式)、fair(第三方提供的响应时间方式)、url_hash(第三方通过的依据URL分配方式)。
nginx linux 启动、重启、停止
./nginx
./nginx -s reload
./nginx -s stop
Nginx windows常用命令
start nginx 启动命令
nginx -s reload :修改配置后重新加载生效
nginx -s stop :快速停止nginx

网友评论