nginx反向代理以及过滤静态⽂件的常⽤配置
缘起
nginx有两个重要的功能,⼀个是静态资源服务器,另⼀个就是反向代理,本⽂主要对nginx作为反向代理功能的主要配置做⼀个讲解。下⾯先看⼀个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      pes;
#f;
f;
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;
location / {
proxy_pass www.bxoon:8088/;
}
location ~ .*\.(gif|jpg|jpeg|png|bmp|swf|css|js|eot|svg|ttf|woff|woff2|properties|json)$ {
proxy_pass 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;
location / {
proxy_pass www.bxoon:8088/;
}
}
}
主要部分在server⾥⾯
server
{
listen      80;  #监测的端⼝号
server_name www.bxoon; #访问的域名
location / {
proxy_pass www.bxoon:8088/; #转发到哪⾥去
}
location ~ .*\.(gif|jpg|jpeg|png|bmp|swf|css|js|eot|svg|ttf|woff|woff2|properties|json)$ {
proxy_pass 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;
location / {
proxy_pass www.bxoon:8088/;
}
nginx 配置文件
}
这⾥的意思是访问 www.bxoon:80 这样的地址的请求会被转发到www.bxoon:8088⾥⾯去。当然,我们需要把www.bxoon映射到nginx部署的所在服务器的IP,这样nginx才能接收到请求进⽽进⾏转发。
server是可以配置多个的,⽐如上⾯的配置就有两个server,第⼆个server的意思是把访问 www.43ba的请求解析到
www.bxoon:8088 这⾥去。也就是说,对于上述请求,⽆论⽤户访问的是www.bxoon:80还是 www.43ba,最终请求都会被转发到www.bxoon: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 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;
}
rewrite or internal redirection cycle

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。