nginx常用代理配置

日期:2019-11-03编辑作者:动漫动画

因为事情类别必要,需求对web服务作nginx代理,在不断的品尝进度中,轻易计算了刹那间广阔的nginx代理配置。

nginx配置详细解释
nginx常用正则表明式
nginx安装仿效
必赢电子游戏娱乐,nginxlocation和rewrite配置
必赢优惠大厅官网,nginx配置官方网址例子
nginx实时生成缩略图
缩略图配置参考
nginx include配置
nginx 缩略图详细介绍

3. 报文数据替换

行使nginx代理最牛(dan卡塔尔逼(sui卡塔尔的情景正是http响应报文内写死了劳务地点或web相对路线。写死服务地方的动静比超级少见,但也间或存在。最辛苦的是写死了web相对路线,尤其是相对路线都不曾国有前缀。比如来说:

诚如的web页面会含有如下相通路线:

  • /public:用于静态页面能源,如js脚本/public/js,样式表/public/css,图片/public/img等。
  • /static:和/public类似。
  • /api:用于后台服务API接口。
  • /login:用于登陆验证。
  • 其他。

对此这么的服务,可能的代办配置如下:

location /my/ {
    proxy_pass http://my_server/;
    proxy_set_header Host $host:$server_port;

    proxy_redirect / /my/;
}
location /login/ {
    proxy_pass http://my_server/public;
    proxy_set_header Host $host:$server_port;
}
location /public/ {
    proxy_pass http://my_server/public;
    proxy_set_header Host $host:$server_port;
}
location /api/ {
    proxy_pass http://my_server/api;
    proxy_set_header Host $host:$server_port;
}

由于web页面或静态财富内写死了近乎的相对路线,那么对于客商来讲,通过页面内的链接实行跳转时,都会呈请到nginx服务对应的门道上。风华正茂旦存在另一个服务也包罗相似的路径,也急需nginx进行代理,那么冲突就现身了:拜会nginx的同三个路径下的倡议究竟转载给哪一个劳务?

要减轻这几个主题素材,必需在客商选拔报文前,将报文的数目中富含的相对路线都增多统黄金年代的前缀,如/my/public,/my/api,/my/login,这样nginx代理配置则能够简化为:

location /my/ {
    proxy_pass http://my_server/;
    proxy_set_header Host $host:$server_port;

    proxy_redirect / /my/;
}
location /other/ {
    proxy_pass http://other_server/;
    proxy_set_header Host $host:$server_port;

    proxy_redirect / /other/;
}

nginx的ngx_http_sub_module模块提供了相近的报文数据替换功效,该模块私下认可不会安装,必要在编写翻译nginx时增多--with-http_sub_module参数,可能直接下载nginx的rpm包。

使用sub_filter对数码包进行轮番的语法如下:

location /my/ {
    proxy_pass http://my_server/;
    proxy_set_header Host $host:$server_port;

    sub_filter 'href="/' 'href="/my/';
    sub_filter 'src="/' 'src="/my/';
    sub_filter_types text/html;
    sub_filter_once  off;
}

上述配置会将/my/下的装有响应报文内容的href="/替换为href="/my,以致src="/替换为src="/my,即为全体的相对路径增多公共前缀。

只顾,假如须要配备四个sub_filter,必得有限支撑nginx是1.9.4版本之上的。

client_max_body_size 10m
同意客商端央浼的最大单文件字节数。倘若有上传不小文件,请设置它的约束值

1. 最简反向代理配置

在http节点下,使用upstream配置服务地点,使用server的location配置代理映射。

upstream my_server {                                                         
    server 10.0.0.2:8080;                                                
    keepalive 2000;
}
server {
    listen       80;                                                         
    server_name  10.0.0.1;                                               
    client_max_body_size 1024M;

    location /my/ {
        proxy_pass http://my_server/;
        proxy_set_header Host $host:$server_port;
    }
}

由此该配置,访谈nginx地址

亟需当心的是,假设根据如下配置:

upstream my_server {                                                         
    server 10.0.0.2:8080;                                                
    keepalive 2000;
}
server {
    listen       80;                                                         
    server_name  10.0.0.1;                                               
    client_max_body_size 1024M;

    location /my/ {
        proxy_pass http://my_server;
        proxy_set_header Host $host:$server_port;
    }
}

那么,访问nginx地址

sendfile on
敞开高效文件传输情势,sendfile指令钦赐nginx是不是调用sendfile函数来输出文件,收缩顾客空间到底蕴空间的上下文切换。对于普通应用设为 on,假使用来举行下载等使用磁盘IO重负载应用,可安装为off,以抵消磁盘与互连网I/O管理速度,减弱系统的负载。

2. 重定向报文代理

不怕配置了nginx代理,当服务重回重定向报文时(http code为301或302卡塔 尔(英语:State of Qatar),会将重定向的靶子url地址放入http response报文的header的location字段内。客户浏览器收到重定向报文时,会解析出该字段并作跳转。当时新的央浼报文将平素发送给服务地点,而非nginx地址。为了能让nginx拦截此类央求,必得修正重定向报文的location消息。

location /my/ {
    proxy_pass http://my_server;
    proxy_set_header Host $host:$server_port;

    proxy_redirect / /my/;
}

使用proxy_redirect能够修正重定向报文的location字段,例子中会将装有的根路线下的url代理到nginx的/my/路线下回到给客商。比方服务再次回到的重定向报文的location原始值为/login,那么通过nginx代理后,客商抽出的报文的location字段为/my/login。那时候,浏览器将会跳转到nginx的/my/login地址进行拜谒。

须要小心的是,服务重临的重定向报文的location字段一时会填写相对路线(包涵服务的ip/域名和端口卡塔尔国,有的时候候会填写相对路线,这个时候亟待依据实际情状开展鉴定区别。

location /my/ {
    proxy_pass http://my_server;
    proxy_set_header Host $host:$server_port;

    proxy_redirect http://my_server/ http://$host:$server_port/my/;
}

上述配置就是将my_nginx常用代理配置。server服务的根路线下的富有路线代理到nginx地址的/my/路线下。当nginx配置独有三个server时,http://$host:$server_port前缀能够轻易。

keepalive_timeout 65
: 长连接超时时间,单位是秒,那么些参数很机灵,涉及浏览器的花色、后端服务器的过期设置、操作系统的设置,能够此外起一片小说了。长连接哀告多量小文件的时候,能够缩小重新建设构造连接的付出,但假若有大文件上传,65s内没上传达成会引致倒闭。假使设置时间过长,顾客又多,长日子维系连接会占用多量资源。

4. 总结

固然如此,sub_filter也不可能缓和所不寻常。近日风靡的js框架都会有活动渲染url的效果与利益,也正是说,比超级多相对路线并不是写死在静态页面内,也是由js代码框架动态变化的,直面诸有此类的场馆,sub_filter也是不可能了。对于那样的图景,小编必须要由衷地劝说,依旧安静的改代码吧!

本文由必赢437登录发布于动漫动画,转载请注明出处:nginx常用代理配置

关键词:

Java Web高级编程(四)

必赢电子游戏娱乐 ,行使过滤器改革应用程序 WebSocket 大器晚成、过滤器的指标 一、WebSocket的产生 过滤器是能够阻碍...

详细>>

Java Web高级编程(四)

必赢电子游戏娱乐 ,行使过滤器改革应用程序 WebSocket 大器晚成、过滤器的指标 一、WebSocket的产生 过滤器是能够阻碍...

详细>>

必赢优惠大厅官网WKWebView强大的新特性

iOS11对WKWebView的功力越来越周全,新添如下效果: Manager Cookies Fileter unwanted content Provide custom resources 下边是对一一个...

详细>>

双喜字的来历 解读结婚双喜字的故事和贴法

(0) 摘要 :双喜字的来历 双喜字的故事 双喜字贴法双喜是把两个喜字结合在一起,但不是两个喜字相加,结合以后实际...

详细>>