• 欢迎访问搞代码网站,推荐使用最新版火狐浏览器和Chrome浏览器访问本网站!
  • 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏搞代码吧

Nginx场景应用技术分享

php 搞代码 3年前 (2022-01-22) 30次浏览 已收录 0个评论

本文主要和大家分享Nginx场景应用技术希望能帮助到大家。

Nginx作为静态资源web服务

配置上下文:http、server或location。

可能涉及到,资源压缩、跨域访问、防盗链等场景。

资源压缩配置的上下文:http、server或location
跨域配置的上下文:http、server或location
防盗链配置的上下文:server、location

配置参考

<span style="font-size: 14px">vi /etc/nginx/conf.d/default.conf<br /></span>
<span style="font-size: 14px">server {<br />    ...<br />    <br />    # 开启sendfile,提高网络包的传输效率<br />    sendfile on;<br />    <br />    # 配置图片资源的存放路径及压缩方式<br />    location ~ .*\.(jpg|gif|png)$ {<br />        gzip on;<br />        gzip_http_version 1.1;<br />        gzip_comp_level 2;<br />        gzip_types text/plain application/javascript application/x-javascript text/css application/xml text/javascript application/x-httpd-php image/jpeg image/gif image/png;<br />        # 图片防盗链配置 <br />        # 不指定referer 协议不正确 放行指定IP 放行SEO优化<br />        valid_referers none blocked 39.104.116.91 ~/google\./;<br />        if ($invalid_referer) {<br />            return 403;<br />        }<br />        root /opt/app/code/images;<br />    }<br /><br />    # 配置txt|xml资源的存放路径及压缩方式<br />    location ~ .*\.(txt|xml)$ {<br />        gzip on;<br />        gzip_http_version 1.1;<br />        gzip_comp_level 1;<br />        gzip_types text/plain application/javascript application/x-javascript text/css application/xml text/javascript application/x-httpd-php image/jpeg image/gif image/png;<br />        root /opt/app/code/doc;<br />    }<br />    # 缓存与跨域场景配置<br />    location ~ .*\.(html|htm)$ {<br />        #给返回报文添加Cache-Control、Expires头,控制缓存<br />        #expires 24h;<br />        #允许跨域到指定域<br />        add_header Access-Control-Allow-Origin http://somehost.com;<br />        add_header Access-Control-Allow-Methods GET,POST,PUT,DELETE,OPTIONS;<br />        root /opt/app/code;<br />    }<br /><br />}<br /></span>

Nginx作为代理服务

正向代理

正向代理即客户端代理。客户端通过设置代理服务器,从而达到对目标地址的访问需求。

Nginx可以充当这个代理服务器

配置参考

<span style="font-size: 14px">vi /etc/nginx/conf.d/default.conf<br /></span>
<span style="font-size: 14px">serv<strong style="color:transparent">本文来源gao@daima#com搞(%代@#码@网&</strong><strong>搞gaodaima代码</strong>er {<br />    ...<br />    # 可能会涉及到DNS域名解析<br />    resolver 8.8.8.8;<br />    location / {<br />        # 原封不动的让自己转发客户端的请求<br />        proxy_pass http://$http_host$request_uri;<br />    }<br />}<br /></span>

反向代理

反向代理即服务端代理。对客户端隐藏真实服务器地址。

配置参考

<span style="font-size: 14px">vi /etc/nginx/conf.d/default.conf<br /></span>
<span style="font-size: 14px">server {<br />location / {<br />        #Real Server地址<br />        proxy_pass http://127.0.0.1:8080;<br />        include proxy_params;<br />    }<br />}<br /></span>
<span style="font-size: 14px"># 其他代理配置独立出去,方便复用<br />vi /etc/nginx/proxy_param<br /></span>
<span style="font-size: 14px"># default就可以了。除非返回301的场景,可能需要改写<br />proxy_redirect defalut;<br /><br />#配置header信息,让Real Server了解实际客户端信息<br />proxy_set_header Host $http_host;<br />proxy_set_header X-Real-IP $remote_addr;<br /><br />#一些代理超时设置<br />proxy_connect_timeout 30;<br />proxy_send_timeout 60;<br />proxy_read_timeout 60;<br /><br />#代理缓冲区设置<br />proxy_buffer_size 32k;<br />proxy_buffering on;<br />proxy_buffers 4 128k;<br />proxy_busy_buffers_size 256k;<br />proxy_max_temp_file_size 256k;<br /></span>

Nginx作为负载均衡服务

参考配置

<span style="font-size: 14px">vi /etc/nginx/conf.d/default.conf<br /></span>
<span style="font-size: 14px">upstream backend {<br />    server 192.168.1.101:8001;<br />    server 192.168.1.102:8002;<br />    server 192.168.1.102:8003 down;<br />    server 192.168.1.103:8004 backup;<br />}<br />server {<br />    ...<br />    location / {<br />        # 代理到upstream组<br />        proxy_pass http://backend;<br />        include proxy_params;<br />    }<br />}<br /></span>

server额外参数

upstream组的server后面,支持加以下参数:

参数 说明
down 不参与负载均衡
backup 预留的备份服务器。当没有其他节点提供服务时,它才提供服务
max_fails 允许请求失败的次数
fail_timeout 经过max_fails失败后,服务暂停的时间
max_conns 限制最大接收的连接数

负载均衡调度算法

方式 说明
轮询 按顺序逐一分配给不同的后端服务器
加权轮询 weight值越大,分配到的几率越大
ip_hash 同一IP固定访问同一个后端服务器
least_conn 哪个连接数少就发哪个机器
url_hash 按url参数的hash结果来分配
hash关键数值 hash自定义的key
<span style="font-size: 14px"># 加权轮询<br />upstream backend {<br />    server 192.168.1.101:8001 weight=5;<br />    server 192.168.1.102:8002;<br />    server 192.168.1.102:8003 down;<br />    server 192.168.1.103:8004 backup;<br />}<br /></span>
<span style="font-size: 14px"># IP HASH<br />upstream backend {<br />    ip_hash;<br />    server 192.168.1.101:8001;<br />    server 192.168.1.102:8002;<br />    server 192.168.1.102:8003 down;<br />    server 192.168.1.103:8004 backup;<br />}<br /></span>
<span style="font-size: 14px"># 最少连接数<br />upstream backend {<br />    least_conn;<br />    server 192.168.1.101:8001;<br />    server 192.168.1.102:8002;<br />    server 192.168.1.102:8003 down;<br />    server 192.168.1.103:8004 backup;<br />}<br /></span>
<span style="font-size: 14px"># URL HASH<br />upstream backend {<br />    url_hash;<br />    server 192.168.1.101:8001;<br />    server 192.168.1.102:8002;<br />    server 192.168.1.102:8003 down;<br />    server 192.168.1.103:8004 backup;<br /><br /></span>

相关推荐:

nginx限速之连接数限制详解

nginx配置React静态页面实例教程

php利用Nginx如何实现反向代理

以上就是Nginx场景应用技术分享的详细内容,更多请关注搞代码gaodaima其它相关文章!


搞代码网(gaodaima.com)提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发送到邮箱[email protected],我们会在看到邮件的第一时间内为您处理,或直接联系QQ:872152909。本网站采用BY-NC-SA协议进行授权
转载请注明原文链接:Nginx场景应用技术分享

喜欢 (0)
[搞代码]
分享 (0)
发表我的评论
取消评论

表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址