nginx反向代理以及过滤静态文件的常用配置

admin8个月前笔记71

image.pngnginx有两个重要的功能,一个是静态资源服务器,另一个就是反向代理,本文主要对nginx作为反向代理功能的主要配置做一个讲解。下面先看一个nginx的完整配置.

nginx配置

一个nginx的完整配置及解释

user  www www;
worker_processes auto;
error_log  /www/wwwlogs/nginx_error.log  crit;
pid        /www/server/nginx/logs/nginx.pid;
worker_rlimit_nofile 51200;

events
    {
        use epoll;
        worker_connections 51200;
        multi_accept on;
    }

http
    {
        include       mime.types;
        #include luawaf.conf;

        include proxy.conf;

        default_type  application/octet-stream;

        server_names_hash_bucket_size 512;
        client_header_buffer_size 32k;
        large_client_header_buffers 4 32k;
        client_max_body_size 50m;

        sendfile   on;
        tcp_nopush on;

        keepalive_timeout 60;

        tcp_nodelay on;

        fastcgi_connect_timeout 300;
        fastcgi_send_timeout 300;
        fastcgi_read_timeout 300;
        fastcgi_buffer_size 64k;
        fastcgi_buffers 4 64k;
        fastcgi_busy_buffers_size 128k;
        fastcgi_temp_file_write_size 256k;
        fastcgi_intercept_errors on;

        gzip on;
        gzip_min_length  1k;
        gzip_buffers     4 16k;
        gzip_http_version 1.1;
        gzip_comp_level 2;
        gzip_types     text/plain application/javascript application/x-javascript text/javascript text/css application/xml;
        gzip_vary on;
        gzip_proxied   expired no-cache no-store private auth;
        gzip_disable   "MSIE [1-6]\.";

        limit_conn_zone $binary_remote_addr zone=perip:10m;
        limit_conn_zone $server_name zone=perserver:10m;

        server_tokens off;
        access_log off;

server
    {
       listen       80; 
       server_name www.bxoon.com;
       location / {
            proxy_pass http://www.bxoon.com:8088/;
       }

        location ~ .*\.(gif|jpg|jpeg|png|bmp|swf|css|js|eot|svg|ttf|woff|woff2|properties|json)$ {
                proxy_pass http://localhost:8088;
                proxy_read_timeout 600s;
            proxy_set_header ?X-Real-IP ?$remote_addr;
            proxy_set_header Host $host:$server_port;
            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        }
    }
server
    {
       listen       80;
       server_name www.43ba.com;
       location / {
            proxy_pass http://www.bxoon.com:8088/;
       }
    }
}

主要部分在server里面

server
    {
       listen       80;         #监测的端口号
       server_name www.bxoon.com;   #访问的域名
       location / {
            proxy_pass http://www.bxoon.com:8088/; #转发到哪里去
       }

        location ~ .*\.(gif|jpg|jpeg|png|bmp|swf|css|js|eot|svg|ttf|woff|woff2|properties|json)$ {
                proxy_pass http://localhost:8088;
                proxy_read_timeout 600s;
            proxy_set_header ?X-Real-IP ?$remote_addr;
            proxy_set_header Host $host:$server_port;
            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        }
    }
server
    {
       listen       80;
       server_name www.43ba.com;
       location / {
            proxy_pass http://www.bxoon.com:8088/;
       }
    }

这里的意思是访问 www.bxoon.com:80 这样的地址的请求会被转发到www.bxoon.com:8088里面去。当然,我们需要把www.bxoon.com映射到nginx部署的所在服务器的IP,这样nginx才能接收到请求进而进行转发。
server是可以配置多个的,比如上面的配置就有两个server,第二个server的意思是把访问 www.43ba.com的请求解析到www.bxoon.com:8088 这里去。也就是说,对于上述请求,无论用户访问的是www.bxoon.com:80还是 www.43ba.com,最终请求都会被转发到www.bxoon.com:8088

关于静态资源过滤

按照上诉配置配置好之后会发现css、js、图片这些都加载不出来了,这是因为nginx默认是开启了静态资源过滤的,这是什么意思呢?文章开头说过,nginx处了可以作为反向代理服务器外还可以作为静态资源服务器,所以nginx对于css、js、图片这些静态资源,默认是开启代理的,当浏览器请求这些资源的时候nginx默认不会去我们的后端tomcat请求资源,而是会在自己的目录下面找,但是因为我们的项目是放在tomcat里面,很明显这里是找不到的,所以就会加载不出来,那么我们需要配置nginx不帮我们代理静态资源,那么就可以做如下配置

location ~ .*\.(gif|jpg|jpeg|png|bmp|swf|css|js|eot|svg|ttf|woff|woff2|properties|json)$ {
            proxy_pass http://localhost:8088;
            proxy_read_timeout 600s;
      proxy_set_header ?X-Real-IP ?$remote_addr;
      proxy_set_header Host $host:$server_port;
      proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        }

这是一个正则表达式的写法,括号中的代表文件的类型,配置了这个之后,就是说请求静态资源的时候不会去nginx配置的静态资源目录下找,而会直接去原项目中找,也就是我们后端的tomcat中找。

使用Nginx过程中的一些报错处理方法

[error] 21#21: *1 open() “/usr/share/nginx/html/favicon.ico” failed (2: No such file or directory)
在配置文件中配置如下

location = /favicon.ico {
    log_not_found off;
    access_log off;
}


相关文章

修复 Linux 上的文件权限错误

修复 Linux 上的文件权限错误

如果你通过网络或“跑腿网络”(将文件保存到硬盘,以将其复制到一台计算机)在两个用户之间共享文件,那么在尝试读取或写入文件时可能会遇到权限错误。即使你了解它的概念,你也可能不知道该如何诊断或解决问题。我...

教你搭建你自己的Git服务器

教你搭建你自己的Git服务器

直到现在,我们主要讨论的还是以一个使用者的身份与 Git 进行交互。这篇文章中我将讨论 Git 的管理,并且设计一个灵活的 Git 框架。你可能会觉得这听起来是 “高阶 Git 技术” 或者 “只有狂...

Shell 输入重定向

和输出重定向一样,Unix 命令也可以从文件获取输入,语法为:command1 < file1这样,本来需要从键盘获取输入的命令会转移到文件读取内容。注意:输出重定...

apache使用fcgi配置PHP环境的步骤

早期的CGI技术使外部程序与Web服务器之间交互成为可能,但CGI程序运行在独立的进程中,并对每个Web请求创建一个进程,这种方法非常容易实现,但效率很差,难以扩展。面对大量请求,进程的大量创建和消亡...

Redis的三个必知必会的问题

Redis的三个必知必会的问题

缓存是互联网应用中不可或缺的一部分。而提到缓存,就不得不提它的三个经典问题——缓存穿透、缓存击穿和缓存雪崩,我称它们为缓存问题三兄弟。缓存的作用主要有两个:一来提升访问速度;二来保护数据库。在业务量不...

如何使用Linux匿名上网-四大法宝

如何使用Linux匿名上网-四大法宝

一些人可能会认为这是“锡箔”思维方式,但是正如全球各地的许多情报组织的信息反馈中看到的,政府监视已从被认为一种疯狂的阴谋论变成了几乎赤裸裸的公然威胁。关注隐私、希望尽可能不被人监视的那些人会发现,如果...

发表评论    

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。