nginx+tomcat 实现反向代理配置

一段简单的实现反向代理的代码 -要将请求传递给HTTP代理服务器,则在一个location块内指定proxy_pass指令

server {  
        listen       80;                                                        
        server_name  localhost;                                              
        client_max_body_size 1024M;

        location / {
            proxy_pass http://localhost:8080;
            proxy_set_header Host $host:$server_port;
        }
}

保存配置文件后启动Nginx,这样当我们访问localhost的时候,就相当于访问 localhost:8080 了。

注意如果代理访问url地址为http://localhost:8080/jenkins

 location ^~ /jenkins/ {
            proxy_pass   http://localhost:8080/jenkins;
            proxy_set_header Host $host:$server_port;
        }

或输入地址端口即访问

 location / {
            proxy_pass   http://localhost:8080/jenkins;
            proxy_set_header Host $host:$server_port;
        }

Nginx 其他命令
以下包含了 Nginx 常用的几个命令:
/usr/local/webserver/nginx/sbin/nginx -s reload # 重新载入配置文件
/usr/local/webserver/nginx/sbin/nginx -s reopen # 重启 Nginx
/usr/local/webserver/nginx/sbin/nginx -s stop # 停止 Nginx

在nginx–>conf 目录下:
1.新建proxy.conf 文件

#!nginx (-)
# proxy.conf 
proxy_redirect          off;
proxy_set_header        Host $host;
proxy_set_header        X-Real-IP $remote_addr;  #获取真实ip
#proxy_set_header       X-Forwarded-For   $proxy_add_x_forwarded_for; #获取代理者的真实ip
client_max_body_size    10m;
client_body_buffer_size 128k;
proxy_connect_timeout   90;
proxy_send_timeout      90;
proxy_read_timeout      90;
proxy_buffer_size       4k;
proxy_buffers           4 32k;
proxy_busy_buffers_size 64k;
proxy_temp_file_write_size 64k;

2.修改nginx.conf,完整内容如下

#nx所在的用户名和用户组
#user  www www; 
#启动进程数
worker_processes 8;
#全局错误日志及PID文件
error_log  /usr/local/webserver/nginx/logs/nginx_error.log  crit;
pid        /usr/local/webserver/nginx/nginx.pid;
#Specifies the value for maximum file descriptors that can be opened by this process.
worker_rlimit_nofile 65535;
#工作模式及连接数上限
events
{
  use epoll;
  worker_connections 65535;
}
#设定http服务器,利用它的反向代理功能提供负载均衡支持
http
{
  #设定mime类型
  include       mime.types;
  default_type  application/octet-stream;
  include /usr/local/webserver/nginx/conf/proxy.conf;
  #charset  gb2312;
  #设定请求缓冲    
  server_names_hash_bucket_size 128;
  client_header_buffer_size 32k;
  large_client_header_buffers 4 32k;
#  client_max_body_size 8m;
  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 128k;
#  gzip on;
#  gzip_min_length  1k;
#  gzip_buffers     4 16k;
#  gzip_http_version 1.0;
#  gzip_comp_level 2;
#  gzip_types       text/plain application/x-javascript text/css application/xml;
#  gzip_vary on;
#limit_zone  crawler  $binary_remote_addr  10m;
###禁止通过ip访问站点
 # server{
#        server_name _;
 #       return 404;
 #       }
  server
  {
    listen       8081;
    server_name  localhost;
    index index.html index.jsp;
    root  /usr/jenkins_tomcat/webapps/jenkins;
    #limit_conn   crawler  20;    
    location ~ .*.(jsp|shtml)$ #所有shtml的页面均交由tomcat处理
    {
      index index.jsp;
      proxy_pass http://localhost:8080;#转向tomcat处理
      }
    location ^~ /jenkins/ {
        proxy_pass   http://localhost:8080/jenkins;
        proxy_redirect off;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    }
    location ~ .*\.(gif|jpg|jpeg|png|bmp|swf)$ #设定访问静态文件直接读取不经过tomcat
    {
      expires      30d;
    }
    location ~ .*\.(js|css)?$
    {
      expires      1h;
    }    
   }  
#定义访问日志的写入格式
     log_format  access  '$remote_addr - $remote_user [$time_local] "$request" '
              '$status $body_bytes_sent "$http_referer" '
              '"$http_user_agent" $http_x_forwarded_for';
    access_log  /usr/local/webserver/nginx/logs/localhost.log access;#设定访问日志的存放路径   
}

学习参考:易百教程 菜鸟教程

你可能感兴趣的:(nginx)