使用nginx实现静动分离

1、原理

Nginx的静态处理能力很强,但是动态处理能力不足,因此,在企业中常用动静分离技术。动静分离技术其实是采用代理的方式,在server{}段中加入带正则匹配的location来指定匹配项针对php、jsp的动静分离:静态页面交给Nginx处理,动态页面交给PHP-FPM模块或Apache、tomcat、IIS处理。在Nginx的配置中,是通过location配置段配合正则匹配实现静态与动态页面的不同处理方式。

Nginx是一种轻量级,高性能,多进程的Web服务器,非常适合作为静态资源的服务器使用,而动态的访问操作可以使用稳定的Apache、Tomcat及IIS等来实现,这里就以Nginx作为代理服务器的同时,也使用其作为静态资源的服务器,而动态的访问服务器就以tomcat为例说明。

说明:

1、代理服务器和静态服务器可以为一台服务器,也可以独立部署,这里代理服务器和静态服务器为一台服务器。

2、静态服务器中,存放的资源主要是源代码文件、图片、属性、样式以及其它所有非动态的资源文件。

3、调度规则,即为代理服务器,这里是Nginx的服务器调度规则。

4、动态服务器,其种类比较繁多,可以是Apache、Tomcat、IIS以及其它Web服务器,它们一般分别隶属于一台服务器。

1.1、修改nginx配置文件

vim /usr/local/nginx/conf/nginx.conf

user www www;

       worker_processes 4;

       worker_cpu_affinity 0001 0010 0100 1000;

       error_log  logs/error.log;

       worker_rlimit_nofile 10240;

       pid logs/nginx.pid;

       events {

          use epoll;

          worker_connections  65535;

       }

      

       http {

         include mime.types;

         default_type application/octet-stream;

         log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '

                            '$status $body_bytes_sent "$http_referer" '

                            '"$http_user_agent" "$http_x_forwarded_for"'

                            '"$upstream_cache_status"';

         access_log  logs/access.log  main;

         server_tokens off;

         sendfile       on;

         tcp_nopush     on;

         keepalive_timeout  65;

        

         gzip on;

         gzip_comp_level 6;

         gzip_http_version 1.1;

         gzip_proxied any;

         gzip_min_length 1k;

         gzip_buffers 16 8k;

         gzip_types text/plain text/css text/javascript application/json application/javascript application/x-javascript application/xml;

         gzip_vary on;

        

         client_max_body_size   10m;

         client_body_buffer_size   128k;

         proxy_connect_timeout   75;

         proxy_send_timeout   75;

         proxy_read_timeout   75;

         proxy_buffer_size   4k;

         proxy_buffers   4 32k;

         proxy_busy_buffers_size   64k;

         proxy_temp_file_write_size  64k;

         proxy_buffering off;

         proxy_temp_path /usr/local/nginx/proxy_temp;

         proxy_cache_path /usr/local/nginx/proxy_cache levels=1:2 keys_zone=my-cache:100m max_size=1000m inactive=600m max_size=2g;

         #配置负载均衡

         upstream tomcat_dynamic_pools {              # tomcat动态服务器集群

            server 192.168.1.3:8080 weight=1 max_fails=2 fail_timeout=10s;

         }

         upstream static_pools {                        #静态服务器集群

            server 192.168.1.5 weight=1 max_fails=2 fail_timeout=10s;

         }

       server{

            listen 80;

            server_name  www.nihao.com;

            location  ~  .*\.(gif|jpg|jpeg|png|bmp|rar|zip|txt|flv|mid|doc|ppt|xls|mp3|wma|html|htm|css|js|ico|swf|pdf)$ {

               #所有静态文件直接读取硬盘内容:读取的静态资源存放位置

               root html ;

               #资源是否进行缓存与缓存时间

               expires 30d; #缓存30天

             }

         }

      

       #配置nginx动静分离

         server {

             listen       80;

             server_name  www.nihao.com;

             charset utf-8;

            

             location ~ .*\.jsp$ {

                proxy_pass        http://tomcat_dynamic_pools;

                proxy_redirect off;

                proxy_set_header  Host  $host;

                proxy_set_header  X-Forwarded-For  $remote_addr;

                proxy_set_header   X-Forwarded-Proto $scheme;

                proxy_ignore_headers Set-Cookie;

                proxy_hide_header Set-Cookie;

                proxy_next_upstream error timeout invalid_header http_500 http_502 http_503 http_504;

             }

      

             location  / {

                proxy_pass  http://static_pools;

                proxy_redirect off;

                proxy_set_header Host $host;

                proxy_set_header X-Forwarded-For $remote_addr;

                proxy_next_upstream error timeout invalid_header http_500 http_502 http_503 http_504;

                proxy_cache my-cache;

                add_header Nginx-Cache $upstream_cache_status;

                proxy_cache_valid 200 304 301 302 8h;

                proxy_cache_valid 404 1m;

                proxy_cache_valid any 1d;

                #proxy_cache_key $host$uri$is_args$args;

                expires 30d;

             }

          }

       }

1.2、重载nginx

nginx -s reload

1.3、测试

访问静态网页

 访问动态网页

 

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值