Nginx + Tomcat 反向代理,配置失败,求大神解惑! 10C

前提:
二级域名:www.hnrunzhi.com,admin.hnrunzhi.com
http service:Nginx

web service:Tomcat
服务器:Linux
目的:通过Nginx反向代理实现 多个二级域名访问 linux服务器上tomcat上的web项目。
例如:www.hnrunzhi.com 通过Nginx反向代理访问 a项目
www.hnrunzhi.com 通过Nginx反向代理访问 b项目

Nginx的nginx.conf文件如下:

 #设置低权限用户,为了安全而设置的
#user nobody;

#工作衍生进程数
worker_processes 4;

#设置错误文件存放路径
#error_log logs/error.log;
#error_log logs/error.log notice;
#error_log logs/error.log info;

#设置pid存放路径(pid是控制系统中重要文件)
#pid logs/nginx.pid;

#设置最大连接数
events{
  worker_connections 1024;
}

http {
  #用来设置日志格式
  log_format main '$remote_addr - $remote_user [$time_local] "$request" '
           '$status $body_bytes_sent "$http_referer" '
           '"$http_user_agent" "$http_x_forwarded_for"';
  #用来指定日志文件的存放路径
  #access_log /data/wwwlogs/access_nginx.log main;

  #开启高效文件传输模式
  sendfile      on;
  #防止网络阻塞
  tcp_nopush     on;
  #防止网络阻塞
  tcp_nodelay     on;
  #长连接超时时间,单位是秒
  keepalive_timeout  65;
  #散列表的冲突率,默认1024,越大则内存消耗更多,但散列key的冲突率会降低,检索速度就更快
  types_hash_max_size 2048;

  #文件扩展名与文件类型映射表
  include       /usr/local/nginx/conf/mime.types;
  #默认文件类型
  default_type    application/octet-stream;

  #include /etc/nginx/conf.d/*.conf;

  #主要是用于设置一组可以在proxy_pass和fastcgi_pass指令中使用额代理服务器,默认负载均衡方式为轮询
  upstream tomcat_client {
    server localhost:8080;
  }

  #开启gzip压缩,开启后,访问网页会自动压缩
  #gzip on;

  #指定服务器的名称和参数
  server {
    listen 80;
    server_name www.hnrunzhi.com;
    location / {
      proxy_pass http://tomcat_client;
      proxy_redirect default;
      #设置代理
      proxy_set_header Host $host;
      proxy_set_header X-Real-IP $remote_addr;
    }
  }
  server {
    listen 80;
    server_name admin.hnrunzhi.com;
    location / {
      proxy_pass http://tomcat_client;
      proxy_redirect default;
      proxy_set_header Host $host;
      proxy_set_header X-Real-IP $remote_addr;
    }
  }
}

Tomcat的service.xml文件如下:

 <Service name="Catalina">
        <Connector port="8080" protocol="HTTP/1.1"
        connectionTimeout="20000"
        redirectPort="8443" URIEncoding="utf-8"/>

        <Connector port="8009" protocol="AJP/1.3" redirectPort="8443" />

        <Engine name="Catalina" defaultHost="www.hnrunzhi.com">

            <Realm className="org.apache.catalina.realm.LockOutRealm">

                <Realm className="org.apache.catalina.realm.UserDatabaseRealm"
                resourceName="UserDatabase"/>
            </Realm>

            <Host name="www.hnrunzhi.com" appBase="webapps" unpackWARs="true" autoDeploy="true"
            xmlValidation="false" xmlNamespaceAware="false">
                <Context path="/" docBase="/usr/java/apache-tomcat-7.0.79/webapps/Education" reloadable="true"/>
                <Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs"
                prefix="www_access_log." suffix=".txt"
                pattern="%h %l %u %t &quot;%r&quot; %s %b" />
            </Host>
            <Host name="admin.hnrunzhi.com" appBase="webapps" unpackWARs="true" autoDeploy="true"
            xmlValidation="false" xmlNamespaceAware="false">
                <Context path="/" docBase="/usr/java/apache-tomcat-7.0.79/webapps/RunZhi.M.S" reloadable="true"/>
                <Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs"
                prefix="admin_access_log." suffix=".txt"
                pattern="%h %l %u %t &quot;%r&quot; %s %b" />
            </Host>

        </Engine>
    </Service>

结果:

通过http://www.hnrunzhi.com/ 可以正常访问到Education项目,而http://admin.hnrunzhi.com 报404,需要 http://admin.hnrunzhi.com/RunZhi.M.S/ 这样才能访问

请大牛帮帮忙,瞧瞧看,我哪个地方配置的是不是有问题咯? 谢谢!~~~

3个回答

location / {
proxy_pass http://tomcat_client;
proxy_redirect default;
#设置代理
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
}
}

把这个地方的地址写清楚,建议不要使用,本地ip有时会发生改变,

通过http://www.hnrunzhi.com/ 可以正常访问到Education项目,而http://admin.hnrunzhi.com 报404,需要 http://admin.hnrunzhi.com/RunZhi.M.S/ 这样才能访问
请大牛帮帮忙,瞧瞧看,我哪个地方配置的是不是有问题咯? 谢谢!~~~

图片说明我的是这样配置的

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问