什么是Nginx服务器
nginx是一款高性能的http 服务器/反向代理服务器及电子邮件(IMAP/POP3)代理服务器。由俄罗斯的程序设计师Igor Sysoev所开发,官方测试nginx能够支支撑5万并发链接,并且cpu、内存等资源消耗却非常低,运行非常稳定。
Nginx应用
-
静态服务器
Nginx是一个http服务可以独立提供http服务,可以做网页静态服务器。
-
反向代理服务器,实现负载均衡
市场上还有其他反向代理服务器,例如:lvs、F5(硬件)、haproxy
-
反向代理配置
使用nginx配置反向代理,修改nginx.conf文件,新增
server { listen 80; server_name localhost; # /代表根路径的所有请求 location / { proxy_pass http://127.0.0.1:8080; index index.html index.htm; } }
如上配置表明监听本机的 80 端口的所有请求转发到http://127.0.0.1:8080处理。
-
负载均衡有什么好处?
能够提高网站吞吐量,减轻单台服务器的压力。
-
ngnix负载均衡策略
- 轮询
- 权重
- ip绑定
修改ngnix.conf,实现负载均衡配置,默认使用的是轮询机制
#配置负载均衡的机器 upstream backserver { server 192.168.200.1:8080; server 192.168.200.1:8080; } #配置代理规则 server { listen 80; server_name localhost; location / { proxy_pass http://backserver; index index.html index.htm; } }
如下使用权重的配置只需要在server后加上weight即可
#配置负载均衡的机器 upstream backserver { server 192.168.200.1:8080 weight=1; server 192.168.200.1:8080 weight=2; } #配置代理规则 server { listen 80; server_name localhost; location / { proxy_pass http://backserver; index index.html index.htm; } }
-
-
虚拟主机
可以实现在一台服务器虚拟出多个网站。例如个人网站使用的虚拟主机
Nginx高可用
ngnix本身支持高可用配置,可以实现主备配置。同时也支持配置负载均衡宕机容错的机制。
upstream backserver {
server 192.168.200.1:8080 weight=1;
server 192.168.200.1:8080 weight=2;
}
server {
listen 80;
server_name localhost;
location / {
proxy_pass http://backserver;
index index.html index.htm;
proxy_connect_timeout 1;
proxy_send_timeout 1;
proxy_read_timeout 1;
}
}
Nginx解决跨域问题
-
什么是跨域问题?
JavaScript出于安全方面的考虑,不允许跨域调用其他页面的对象,即同源政策。
所谓"同源"指的是"三个相同"。协议相同、域名相同和端口相同。 -
解决跨域问题的几种方案
- 使用jsonp,缺点是不支持post
- 使用httpclient进行内部转发
- 使用http响应头设置允许跨域
- 使用nginx搭建企业api网关
- 使用springzull接口网关
-
如何使用nginx搭建api网关
原理:通过ngnix反向代理实现。
server { listen 80; server_name localhost; location /server1 { proxy_pass http://192.168.200.1:8080/server1; index index.html index.htm; } location /server2 { proxy_pass http://192.168.200.2:8080/server2; index index.html index.htm; } }