a_jian 2018-01-22 07:47 采纳率: 50%
浏览 2420
已结题

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

前提:
二级域名: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条回答 默认 最新

  • BlankCat_ 2018-01-22 07:58
    关注

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

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

报告相同问题?

悬赏问题

  • ¥15 怀疑手机被监控,请问怎么解决和防止
  • ¥15 Qt下使用tcp获取数据的详细操作
  • ¥15 idea右下角设置编码是灰色的
  • ¥15 全志H618ROM新增分区
  • ¥15 在grasshopper里DrawViewportWires更改预览后,禁用电池仍然显示
  • ¥15 NAO机器人的录音程序保存问题
  • ¥15 C#读写EXCEL文件,不同编译
  • ¥15 MapReduce结果输出到HBase,一直连接不上MySQL
  • ¥15 扩散模型sd.webui使用时报错“Nonetype”
  • ¥15 stm32流水灯+呼吸灯+外部中断按键