大略来说便是真实的做事器不能直接被外部网络访问,以是须要一台代理做事器,而代理做事器能被外部网络访问的同时又跟真实做事器在同一个网络环境,当然也可能是同一台做事器,端口不同而已。

反向代理代码示意

在nginx.conf配置文件中,利用 proxy_pass 指令将要求转发到代理做事器

#访问http://file.dreams.com.cn的时候,就相称于访问http://127.0.0.1:8080server {listen 80;#....server_name file.dreams.com.cn;location / {proxy_set_header Host $host;proxy_set_header X-Real-IP $remote_addr;proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;proxy_set_header X-Forwarded-Proto $scheme;proxy_set_header X-Forwarded-Host $server_name;#代理的目标地址proxy_pass http://127.0.0.1:8080;}}

nginx能解析jspnginx五年夜焦点功效全解析 干货高并发 CSS

3、nginx核心功能—负载均衡

Nginx负载均衡是一种廉价、灵巧的实现做事高可用的办法。
用户有多台做事器时,根据规则随机的将要求分发到指定的做事器上处理,负载均衡配置一样平常都须要同时配置反向代理,通过反向代理跳转到负载均衡。

负载均衡的核心是upstream模块,代码示例如下:

upstream backserver {server 172.16.0.7:8080 server 172.16.0.8:8080}server {listen 80;#....server_name file.dreams.com.cn;location / {#代理的目标地址proxy_pass http://backserver;#要求http://file.dreams.com.cn转发到http://backserver}}

负载均衡模式——轮询:

要求按韶光顺序逐一分发到不同的负载均衡做事器,如果负载均衡做事器down掉,会自动剔除。
处理要求顺序:ABABAB...

upstream backserver {server 172.16.0.7:8080;server 172.16.0.8:8080;}

负载均衡模式——weight:

加权轮询模式,因做事器性能不均,人为指定轮询几率,weight和访问比例成正比。
处理要求顺序:AABAABAAB...

upstream backserver {server 172.16.0.7:8080 weight=2;server 172.16.0.8:8080 weight=1;}

负载均衡模式——ip_hash:

每个要求按访问ip的hash值不同进行分配,这样每个访客固定访问一个后端做事器,可以办理session的问题。
后端做事器不是无状态时,就须要利用ip_hash确保同一个ip的用户访问固定后端做事器。

upstream backserver {ip_hash;server 172.16.0.7:8080;server 172.16.0.8:8080;}

负载均衡模式——fair:

根据负载均衡做事器的相应韶光来分配要求,相应韶光短的优先分配。

upstream backserver {server 172.16.0.7:8080;server 172.16.0.8:8080;fair;}

负载均衡模式——url_hash:

根据访问url的hash结果来分配要求,使每个url定向到同一个后端做事器。

upstream backserver {server 172.16.0.7:8080;server 172.16.0.8:8080;hash $request_uri;hash_method crc32;}

4、nginx核心功能—动静分离

Nginx动静分离是指在web做事器架构中,将静态页面与动态页面或者静态内容接口和动态内容接口分开不同系统访问的架构设计方法,提升整体做事访问性能和可掩护性。
反向代理的时候,如果是静态资源,就直接从nginx发布的路径去读取,而不须要从后台做事器获取了。

注:一样平常在集群场景,动静分离都结合负载均衡来利用。

动静分离代码示例如下:

upstream backserver {server 172.16.0.7:8080 server 172.16.0.8:8080}server {listen 80;#....server_name file.dreams.com.cn;location / {root /data/web;index index.html index.htm;}#所有静态资源都由nginx处理location ~ \.(png|gif|jpg|jpeg|mp4|mp3|css|js)$ {root /data/web;}#所有动态资源都由后端tomcat做事器集群处理location ~ \.(jsp|do|php)$ {proxy_pass http://backserver;} }

5、nginx核心功能—正向代理

Nginx正向代理大略来说,便是客户端通过访问目标做事端,再由目标做事端来转发流量访问互联网,这样可以达到隐蔽客户端真实IP的效果。

注:可以理解为客户端通过Nginx做了一层代理,代理访问互联网

正向代理代码示例如下:

server {listen 8099;resolver 114.114.114.114; # dns解析做事器location /{proxy_pass $scheme://$host$request_uri; #proxy_pass 用来要代理的网站,#$scheme是客户端要求的协议(如http);#$host是客户端要求的域名(如baidu.com);#$request_uri是客户端访问的url地址(如/baidu?s=29)。
#他们拼接造诣是http://baidu.com/baidu?s=29}}

6、nginx核心功能—热启动(附SSL证书配置方法)

当我们修正配置文件后,不用停滞Nginx,就可以实现让配置生效。

热启动代码示例如下:

#Centos重新读取配置的命令是:./nginx -s reload#Windows重新读取配置的命令是:nginx.exe -s reload

nginx证书配置核心代码如下:

server {# SSL利用443端口listen 443 ssl;# SSL证书绑定的域名server_name www.dreams.com;# 证书pem文件ssl_certificate /usr/local/nginx/conf/fullchain.crt;# 证书key文件ssl_certificate_key /usr/local/nginx/conf/cert.key; ssl_session_cache shared:SSL:1m;# 启用 SSL Session 缓存ssl_session_timeout 5m; # 缓存SSL握手产生的参数和加密密钥的时长ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4; # 利用的加密套件的类型ssl_protocols TLSv1 TLSv1.1 TLSv1.2;# 表示利用的TLS协议的类型ssl_prefer_server_ciphers on; # 加密套件优先选择做事器的加密套件location / {root html;index index.html index.htm;}}