设为首页 - 加入收藏 ASP站长网(Aspzz.Cn)- 科技、建站、经验、云计算、5G、大数据,站长网!
热搜: 重新 试卷 文件
当前位置: 首页 > 运营中心 > 建站资源 > 优化 > 正文

Nginx 最实用的配置技巧,用到过才是老司机(2)

发布时间:2019-05-27 22:30 所属栏目:21 来源:37丫37
导读:当一个nginx服务上创建了多个虚拟主机时默认会从上到下查找,如果匹配不到虚拟主机则会返回第一个虚拟主机的内容,如果你想指定一个默认站点时,可以将这个站点的虚拟主机放在配置文件中第一个虚拟主机的位置,或者

当一个nginx服务上创建了多个虚拟主机时默认会从上到下查找,如果匹配不到虚拟主机则会返回第一个虚拟主机的内容,如果你想指定一个默认站点时,可以将这个站点的虚拟主机放在配置文件中第一个虚拟主机的位置,或者在这个站点的虚拟主机上配置listen default

不允许通过IP访问

  1. server { 
  2.     listen       80 default; 
  3.     server_name  _; 
  4.  
  5.     return      404; 

可能有一些未备案的域名或者你不希望的域名将服务器地址指向了你的服务器,这时候就会对你的站点造成一定的影响,需要禁止IP或未配置的域名访问,我们利用上边所说的default规则,将默认流量都转到404去

上边这个方法比较粗暴,当然你也可以配置下所有未配置的地址访问时直接301重定向到你的网站去,也能为你的网站带来一定的流量

  1. server { 
  2.     rewrite ^/(.*)$ https://ops-coffee.cn/$1    permanent; 

直接返回验证文件

  1. location = /XDFyle6tNA.txt { 
  2.     default_type text/plain; 
  3.     return 200 'd6296a84657eb275c05c31b10924f6ea'; 

很多时候微信等程序都需要我们放一个txt的文件到项目里以验证项目归属,我们可以直接通过上边这种方式修改nginx即可,无需真正的把文件给放到服务器上

nginx配置upstream反向代理

  1. http { 
  2.     ... 
  3.     upstream tomcats { 
  4.         server 192.168.106.176 weight=1; 
  5.         server 192.168.106.177 weight=1; 
  6.     } 
  7.  
  8.     server { 
  9.         location /ops-coffee/ {  
  10.             proxy_pass http://tomcats;  
  11.  
  12.             proxy_set_header Host $host; 
  13.             proxy_set_header X-Real-IP $remote_addr; 
  14.             proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; 
  15.             proxy_set_header X-Forwarded-Proto $scheme; 
  16.         } 
  17.     } 
  18.  

稍不注意可能会落入一个proxy_pass加杠不加杠的陷阱,这里详细说下proxy_pass http://tomcats与proxy_pass http://tomcats/的区别:

虽然只是一个/的区别但结果确千差万别。分为以下两种情况:

1. 目标地址中不带uri(proxy_pass http://tomcats)。此时新的目标url中,匹配的uri部分不做修改,原来是什么就是什么。

  1. location /ops-coffee/ { 
  2.     proxy_pass  http://192.168.106.135:8181; 
  3.  
  4. http://domain/ops-coffee/   -->     http://192.168.106.135:8181/ops-coffee/ 
  5. http://domain/ops-coffee/action/abc   -->     http://192.168.106.135:8181/ops-coffee/action/abc 

2. 目标地址中带uri(proxy_pass http://tomcats/,/也是uri),此时新的目标url中,匹配的uri部分将会被修改为该参数中的uri。

  1. location /ops-coffee/ { 
  2.     proxy_pass  http://192.168.106.135:8181/; 
  3.  
  4. http://domain/ops-coffee/   -->     http://192.168.106.135:8181 
  5. http://domain/ops-coffee/action/abc   -->     http://192.168.106.135:8181/action/abc 

nginx upstream开启keepalive

  1. upstream tomcat { 
  2.     server ops-coffee.cn:8080; 
  3.     keepalive 1024; 
  4.  
  5. server { 
  6.     location / { 
  7.         proxy_http_version 1.1; 
  8.         proxy_set_header Connection ""; 
  9.  
  10.         proxy_pass http://tomcat; 
  11.     } 

nginx在项目中大多数情况下会作为反向代理使用,例如nginx后接tomcat,nginx后接php等,这时我们开启nginx和后端服务之间的keepalive能够减少频繁创建TCP连接造成的资源消耗,配置如上

keepalive: 指定每个nginxworker可以保持的最大连接数量为1024,默认不设置,即nginx作为client时keepalive未生效

proxy_http_version 1.1: 开启keepalive要求HTTP协议版本为HTTP 1.1

proxy_set_header Connection "": 为了兼容老的协议以及防止http头中有Connection close导致的keepalive失效,这里需要及时清掉HTTP头部的Connection

404自动跳转到首页

server { location / { error_page 404 = @ops-coffee; } location @ops-coffee { rewrite .* / permanent; }}

(编辑:ASP站长网)

网友评论
推荐文章
    热点阅读