两个javaweb项目,如何让nginx的反向代理,根据不同的域名对应到不同的项目?

是这样的,我的阿里云的centos系统上,装着tomcat,刚装了一个nginx,目前在tomcat里跑着一个项目A(对应的域名是http://louqibang.com),我想把项目B(对应的域名是http://e-house.cn)也放到tomcat里,然后nginx做反向代理,两个域名已经都指向了服务器

nginx的nginx.conf里面不知道怎么配置了,网上查的也乱七八糟的,是不是需要安装两个tomcat?

这样配置报错

[root@iZf5e45q7q4z7tZ nginx-1.6.2]# /usr/local/nginx/sbin/nginx -t
nginx: [emerg] invalid host in upstream "localhost:80/ehouse" in /usr/local/nginx/conf/nginx.conf:94
nginx: configuration file /usr/local/nginx/conf/nginx.conf test failed


#user  nobody;
user www www;
worker_processes  1;

#error_log  logs/error.log;
#error_log  logs/error.log  notice;
#error_log  logs/error.log  info;

#pid        logs/nginx.pid;
error_log /usr/local/nginx/logs/nginx_error.log crit; #日志位置和日志级别
pid /usr/local/nginx/nginx.pid;
worker_rlimit_nofile 65535;
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';
  
#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;
 #下面是server虚拟主机的配置
 upstream louqibang.com{
            server localhost:80;
       
    }
 server  {
    listen       80;
    server_name  louqibang.com;
    charset utf-8;
    large_client_header_buffers 4 16k;
    client_max_body_size 300m;
    client_body_buffer_size 128k;
    proxy_connect_timeout 1;
    proxy_read_timeout 1;
    proxy_send_timeout 1;
    proxy_buffer_size 64k;
    proxy_buffers   4 32k;
    proxy_busy_buffers_size 64k;
    proxy_temp_file_write_size 64k;


    location ~ \.(pdf|apk|txt)$ {
            root /data/www/resources/xxx;
            access_log off;
            expires 24h;
    }
    
    
    location / {
        index  index.html index.jsp;
        #这里的proxy_pass转发的是upstream的名字aaa.com
        proxy_pass  http://louqibang.com;
      proxy_set_header   Host             $host;
     proxy_set_header   X-Real-IP        $remote_addr;
     proxy_set_header   X-Forwarded-For  $proxy_add_x_forwarded_for;
        client_max_body_size    100m;
        access_log off;
    }
  }
  upstream e-house.cn{
            server localhost:80/ehouse;
       
    }
 server  {
    listen       80;
    server_name  e-house.cn;
    charset utf-8;
    large_client_header_buffers 4 16k;
    client_max_body_size 300m;
    client_body_buffer_size 128k;
    proxy_connect_timeout 1;
    proxy_read_timeout 1;
    proxy_send_timeout 1;
    proxy_buffer_size 64k;
    proxy_buffers   4 32k;
    proxy_busy_buffers_size 64k;
    proxy_temp_file_write_size 64k;


    location ~ \.(pdf|apk|txt)$ {
            root /data/www/resources/xxx;
            access_log off;
            expires 24h;
    }
    
    
    location / {
        index  index.html index.jsp;
        #这里的proxy_pass转发的是upstream的名字aaa.com
        proxy_pass  http://e-house.cn;
      proxy_set_header   Host             $host;
     proxy_set_header   X-Real-IP        $remote_addr;
     proxy_set_header   X-Forwarded-For  $proxy_add_x_forwarded_for;
        client_max_body_size    100m;
        access_log off;
    }
  }

}
阅读 5k
2 个回答
server {
    listen 80;
    location /a/ {
        proxy_pass http://louqibang.com/
    }
    location /b/ {
        proxy_pass http://e-house.cn/
    }
}

这样你访问你那台机器,假设域名为www.a.com
则访问http://www.a.com/a/path1则为...://louqibang.com/path1

  1. 不需要安装两个Tomcat
  2. 项目A和项目B在同一个Tomcat里用不同的端口就行了
  3. nginx.conf监听80端口,当访问的的是http://louqibang.com时,代理到项目A。当访问的是:http://e-house.cn,代理到项目B
  4. 至于如何配置,可参考慕课网:http://www.imooc.com/learn/947,你看5-15和5-18就直到怎么配置了。
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题