CentOS7中nginx配置反向代理_nginx反向代理curl (7) failed to connect to 210

ssl_certificate_key  /nginx/conf/test_cert/changhuanyan.pub.key;
ssl_session_timeout 5m;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2; 
ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:HIGH:!aNULL:!MD5:!RC4:!DHE;
ssl_prefer_server_ciphers on;
access_log /nginx/logs/zabbix.access.log;
error_log  /nginx/logs/zabbix.error.log;

location / {
client_max_body_size 100m;
proxy_set_header X-Forwarded-Host $host;
proxy_set_header X-Forwarded-Server $host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_connect_timeout 60s;
proxy_redirect http:// https://;
proxy_pass http://10.xx.xxx.xx/zabbix/;
}

}

server {
listen 9000;
server_name zabbix.changhuanxxxan.pub;
rewrite ^(.*) https://$server_name$1;
}


防火墙端口转发80->9000 443->10443,centos7  
 防火墙设置可以参考: https://www.jianshu.com/p/41ca6a6f042a



firewall-cmd --add-forward-port=port=80:proto=tcp:toport=9000 --permanent
firewall-cmd --add-forward-port=port=443:proto=tcp:toport=10443 --permanent
firewall-cmd --reload


## 4.云主机域名及证书申请


申请域名可以直接在云控制台申请,申请完毕后需要实名认证,也需要备案,域名才可以正常使用。  
 证书申请有云控制台有免费的证书可以申请,如阿里云控制台  
 ![在这里插入图片描述](https://img-blog.csdnimg.cn/20200404184932104.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzQwOTA3OTc3,size_16,color_FFFFFF,t_70)  
 ![在这里插入图片描述](https://img-blog.csdnimg.cn/20200404184939481.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzQwOTA3OTc3,size_16,color_FFFFFF,t_70)  
 注意可以使用二级域名,zabbix.changtest.com  
 ![在这里插入图片描述](https://img-blog.csdnimg.cn/20200404184948195.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzQwOTA3OTc3,size_16,color_FFFFFF,t_70)


## 扩展


**配置反向代理缓存、负载均衡**  
 **1、反向代理缓存**  
 **nginx配置https**



1.激活所需要的网站的https获取crt和key证书

2.在nginx配置文件中配置https证书


将http访问域名重定向为https安全访问



server{

listen80;

server_namewww.shangbee.com shangbee.com;

#重定向shangbee.com到 www.shangbee.com

if ( $host != ‘www.shangbee.com’ ) {

rewrite ^/(.*)$ https://www.shangbee.com permanent;

}

rewrite ^https:// h t t p h o s t http_host httphostrequest_uri?permanent;#强制将HTTP重定向到HTTPS permanent永久重定向

}

server {

listen443ssl;

ssl_certificate /etc/nginx/ssl/nginx.crt;

ssl_certificate_key /etc/nginx/ssl/nginx.key;

keepalive_timeout70;

server_name www.shangbee.com;

server_tokens off;

#add_header Strict-Transport-Security “max-age=31536000; includeSubdomains”;

fastcgi_param HTTPS on;

fastcgi_param HTTP_SCHEME https;

#access_log /app/logs/nginx/mydomain_access.log;

#error_log /app/logs/nginx/mydomain_error.log;

set $root /data/htdocs/ether/public;

location ~ .*.(gif|jpg|jpeg|bmp|png|ico|txt|js|css)$

{

root $root;

}

location / {

root $root;

indexindex.html index.php;

if( -f $request_filename) {

break;

}

if( !-e $request_filename) {

rewrite ^(.*)$ /index.php/$1last;

break;

}

}

location ~ .+.php($|/) {

fastcgi_pass unix:/run/php/php7.0-fpm.sock;

fastcgi_split_path_info ^((?U).+.php)(/

?.+)$;

fastcgi_param PATH_INFO $fastcgi_path_info;

fastcgi_param PATH_TRANSLATED d o c u m e n t r o o t document_root documentrootfastcgi_path_info;

fastcgi_param SCRIPT_FILENAME r o o t root rootfastcgi_script_name;

include fastcgi_params;

}

}


**永久重定向与临时重定向的区别**


临时重定向redirect,永久重定向permanent


**301重定向是永久的重定向,搜索引擎在抓取新内容的同时也将旧的网址替换为重定向之后的网址。**


**302跳转是暂时的跳转,搜索引擎会抓取新的内容而保留旧的网址。因为服务器返回302代码,搜索引擎认为新的网址只是暂时的。**


实施301后,新网址完全继承旧网址,旧网址的排名等完全清零。


**实施302后,对旧网址没有影响,但新网址不会有排名。**


302每次用户请求都会访问一次服务器,并返回给用户,301用户请求后将永久重定向缓存,再次请求直接在本地重定向不会经过服务器。


## 负载均衡与反向代理


反向代理是负载均衡的一种方式


反向代理可以实现负载均衡 但是负载均衡不一定通过反向代理的方式来实现


反向代理也可以不做负载均衡 可以做客户端与web服务器之间的缓存服务器


squid varnish这些反向代理一般做缓存


nginx反向代理一般做负载均衡


负载均衡也可以通过LVS非反向代理的方式来实现 通过ip和端口实现负载均衡


## NGINX反向代理缓存


反向代理(Reverse Proxy)方式是指以代理服务器来接受internet上的连接请求,然后将请求转发给内部网络上的服务器,并将从服务器上得到的结果返回给internet上请求连接的客户端,此时代理服务器对外就表现为一个服务器。


## 反向代理的作用


①保护网站安全:任何来自Internet的请求都必须先经过代理服务器。


简单来说,就是我们网站的所有的请求都要经过反向代理服务器,对反向代理服务器进行安全加固就能解决很大一部分的安全问题。


②通过配置缓存功能加速Web请求:可以缓存真实Web服务器上的某些静态资源,减轻真实Web服务器的负载压力;


可以在反向代理的服务器上缓存某些静态资源,这样的话在反向代理服务器上存在的资源就不用去web服务器上获取,以减轻web服务器的压力。


③实现负载均衡:充当负载均衡服务器均衡地分发请求,平衡集群中各个服务器的负载压力;


可以通过反向代理服务器把请求分发到不同服务器,减轻服务器的压力,还能防止网站某一台服务器挂掉之后,网站就无法访问的问题,做到网站的高可用,减少事故的发生。


## 反向代理缓存设置


**一、在反向代理服务器的配置文件中加入:  
 位置:**


**http段内**



proxy_temp_path /data/nginx-temp;#缓存临时文件路径

proxy_cache_path /data/nginx-cachelevels=1:2keys_zone=nginx-cache:20m

max_size=50m inactive=1m;#缓存保存的路径


levels指定该缓存空间有两层hash目录,第一层目录为1个数字或者字母,第二层为2个数字或者字母


keys\_zone指的是缓存空间名称。 20m 为内存缓存空间大小


max\_size指的是缓存文件可以占用的最大空间。


inactive指的是如果一个缓存文件多长时间不被访问,就会被删除。(天:d、秒:s、分:m)


* 配置的demo  
 **//设置动态服务器的代理 【处理PHP任务】**



upstreamtest {

#ip_hash; #[ 使用ip_hash分发 ]

server192.168.1.254:81weight=2;#[ 设置这个服务器的权重为2 ]

server192.168.1.254:82;

}


**//设置获取静态文件的代理**



upstreamstatic{

server192.168.1.254:81;#[ 静态服务器 ]

}


**设置缓存目录**



proxy_temp_path /data/nginx-temp;#[temp的目录]

proxy_cache_path /data/nginx-cachelevels=1:2keys_zone=nginx-cache:20m max_size=50m inactive=1m;


[ 设置缓存的路径为 /data/nginx-cache 层级为2级,第一级为1个字幕第二个为2个字母 缓存的空间名为 nginx-cache,缓存的内存空间为20M 最大空间为50M 1分钟内没有访问删除这个缓存 ]



END

server{

listen80;

server_name_;

access_loglogs/likang.default.access.log main;

error_loglogs/error.logerror;

root/var/www/html/likang/default;


## 设置反向代理



location/{

proxy_passhttp://test;

proxy_set_headerHost$host;

proxy_set_headerX-Real-IP$remote_addr;

proxy_set_headerX-Forwarded-For$proxy_add_x_forwarded_for;

}


## 设置静态图片



1location~.*.(gif|jpg|png|htm|html|css|js|flv|ico|swf)(.*) {

#root /data/nginx-cache; #[ 图片的根目录 ]

proxy_redirectoff;#[关闭跳转]

proxy_set_headerHost$host;#[ 设置header ]

proxy_cachenginx-cache;#[ 缓存的空间 – 上边定义的 ]

proxy_cache_valid2003021h;#[ 不同http状态缓存时间不同 ]

proxy_cache_valid3011d;

proxy_cache_validany1m;

proxy_ignore_headersSet-Cookie Cache-Control;

proxy_hide_headerCache-Control;

proxy_hide_headerSet-Cookie;

expires30d;#[告诉浏览器缓存有效期 – 30天内可以直接访问浏览器缓存 ]

proxy_passhttp://static;#[文件不存在去那里获取]

}

}


## 解决不缓存的问题:


nginx不缓存原因


默认情况下,nginx是否缓存是由nginx缓存服务器与源服务器共同决定的, 缓存服务器需要严格遵守源服务器响应的header来决定是否缓存以及缓存的时常。header主要有如下:



Cache-control:no-cache、no-store


如果出现这两值,nginx缓存服务器是绝对不会缓存的



Expires:1980-01-01


如果出现日期比当前时间早,也不会缓存。


**解决不缓存方案**  
 **2.1 方法一:**


修改程序或者源服务器web程序响应的header


**2.2 方法二:**


nginx代理直接加上如下一句:



proxy_ignore_headers X-Accel-Expires ExpiresCache-ControlSet-Cookie;


或者:



proxy_ignore_headersSet-CookieCache-Control;

proxy_hide_headerCache-Control;

proxy_hide_headerSet-Cookie;


**扩展:学习nginx的Proxy Cache指令**



proxy_cache


语法:proxy\_cache zone\_name;


默认值:None


使用字段:http, server, location


设置一个缓存区域的名称,一个相同的区域可以在不同的地方使用。


在0.7.48后,缓存遵循后端的”Expires”, “Cache-Control: no-cache”, “Cache-Control: max-age=XXX”以及其他等。然而,目前nginx会忽略一些缓存控制指令,如:”private”和”no-store”,同样,nginx在缓存过程中不会处理”Vary”头,为了确保一些私有数据不被所有的用户看到,后端必须设置 “no-cache”或者”max-age=0″头,或者proxy\_cache\_key包含用户指定的数据如



proxy_cache_key


**语法:proxy\_cache\_key line;**


默认值:httpcookiexxx,在proxycachekey中使用一部分cookie的值可以防止缓存私有数据,所以可以分别指定location以便分开私有数据和公有数据。缓存指令依赖代理缓冲区(buffers),如果proxybuffers设置为off,缓存不会生效。¨K40K语法:¨C2C默认值:schemeproxyostrequest\_uri;


使用字段:http, server, location


指令指定了包含在缓存中的缓存关键字。


复制代码 代码如下:



proxy_cache_key" h o s t host hostrequest_uri$cookie_user";

proxy_cache_key" s c h e m e scheme schemehost$request_uri";

proxy_cache_path


语法:proxy\_cache\_path path [levels=number] keys\_zone=zone\_name:zone\_size [inactive=time] [max\_size=size];


默认值:None


使用字段:http


指令指定缓存的路径和一些其他参数,缓存的数据存储在文件中。缓存的文件名和key为代理URL的MD5 码。levels参数指定缓存的子目录数,例如:



proxy_cache_path /data/nginx/cache levels=1:2 keys_zone=one:10m;


**文件名类似于:**



/data/nginx/cache/c/29/b7f54b2df7773722d382f4809d65029c


所有活动的key和元数据存储在共享的内存区域中,这个区域用keys\_zone参数指定,如果在inactive参数指定的时间内缓存的数据没有被请求则被删除,默认inactive为10分钟。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值