hadoop离线分析(简单版)-nginx+tomcat

目录

Nginx概述

tomcat概述

tomcat 与 nginx,apache的区别

tomcat、websphere、Jboss、weblogic区别

总结

Nginx+Tomcat搭建高性能负载均衡集群


Nginx是一款轻量级的Web服务器/反向代理服务器及电子邮件(IMAP/POP3)代理服务器。在Java的Web架构中,通常使用Tomcat和Nginx进行配合,Nginx作为反向代理服务器,可以对后台的Tomcat服务器负载均衡,也可以让Nginx处理静态页面的请求、Tomcat处理动态请求达到动静分离的目的。

Nginx概述

Nginx ("engine x") 是一个高性能的HTTP和反向代理服务器,也是一个IMAP/POP3/SMTP服务器,是由Igor Sysoev为俄罗斯访问量第二的Rambler.ru站点开发的。其特点是占有内存少,并发能力强,事实上nginx的并发能力确实在同类型的网页服务器中表现较好,中国大陆使用nginx网站用户有:百度、京东、新浪、网易、腾讯、淘宝等。
截止到2014年12月31日,Nginx仅次于apache成为第二大web服务器软件,而在全球最忙碌top10000网站中使用比例更是高达42.7%。其发展速度和流行程度已经远远超过其它同类软件,成为大型网站和高并发网站的首选。
Nginx由内核和一系列模块组成,内核提供web服务的基本功能,如启用网络协议,创建运行环境,接收和分配客户端请求,处理模块之间的交互。Nginx的各种功能和操作都由模块来实现。Nginx的模块从结构上分为核心模块、基础模块和第三方模块:

①核心模块:HTTP模块、EVENT模块和MAIL模块
②基础模块: HTTP Access模块、HTTP FastCGI模块、HTTP Proxy模块和HTTP Rewrite模块
③第三方模块: HTTP Upstream Request Hash模块、Notice模块和HTTP Access Key模块及用户自己开发的模块这样的设计使Nginx方便开发和扩展,也正因此才使得Nginx功能如此强大。Nginx的模块默认编译进nginx中,如果需要增加或删除模块,需要重新编译Nginx,这一点不如Apache的动态加载模块方便。如果有需要动态加载模块,可以使用由淘宝网发起的web服务器Tengine,在nginx的基础上增加了很多高级特性,完全兼容Nginx,已被国内很多网站采用。

tomcat概述

Tomcat 是由 Apache 开发的一个 Servlet 容器,实现了对 Servlet 和 JSP 的支持,并提供了作为Web服务器的一些特有功能,如Tomcat管理和控制平台、安全域管理和Tomcat阀等。由于 Tomcat 本身也内含了一个 HTTP 服务器,它也可以被视作一个单独的 Web 服务器。但是,不能将 Tomcat 和 Apache HTTP 服务器混淆,Apache HTTP 服务器是一个用 C 语言实现的HTTP Web 服务器;这两个 HTTP web server 不是捆绑在一起的。Tomcat 包含了一个配置管理工具,也可以通过编辑XML格式的配置文件来进行配置。

a.Tomcat 重要目录        
/bin - Tomcat 脚本存放目录(如启动、关闭脚本)。 *.sh 文件用于 Unix 系统; *.bat 文件用于 Windows 系统。        
/conf - Tomcat 配置文件目录。        
/logs - Tomcat 默认日志目录。        
/webapps - webapp 运行的目录。        
b.web 工程发布目录结构        
-- webapp                         # 站点根目录        
    |-- META-INF                   # META-INF 目录        
    |   `-- MANIFEST.MF            # 配置清单文件        
    |-- WEB-INF                    # WEB-INF 目录        
    |   |-- classes                # class文件目录        
    |   |   |-- *.class            # 程序需要的 class 文件        
    |   |   `-- *.xml              # 程序需要的 xml 文件        
    |   |-- lib                    # 库文件夹        
    |   |   `-- *.jar              # 程序需要的 jar 包        
    |   `-- web.xml                # Web应用程序的部署描述文件        
    |-- <userdir>                  # 自定义的目录        
    |-- <userfiles>                # 自定义的资源文件        
webapp:工程发布文件夹。其实每个 war 包都可以视为 webapp 的压缩包。        
META-INF:META-INF 目录用于存放工程自身相关的一些信息,元文件信息,通常由开发工具,环境自动生成。        
WEB-INF:Java web应用的安全目录。所谓安全就是客户端无法访问,只有服务端可以访问的目录。        
/WEB-INF/classes:存放程序所需要的所有 Java class 文件。        
/WEB-INF/lib:存放程序所需要的所有 jar 文件。        
/WEB-INF/web.xml:web 应用的部署配置文件。它是工程中最重要的配置文件,它描述了 servlet 和组成应用的其它组件,以及应用初始化参数、安全管理约束等。

tomcat 与 nginx,apache的区别

Apache是Apache软件基金会下的一个项目——Apache HTTP Server Project;Nginx同样也是一款开源的HTTP服务器软件(当然它也可以作为邮件代理服务器、通用的TCP代理服务器)。HTTP服务器本质上也是一种应用程序——它通常运行在服务器之上,绑定服务器的IP地址并监听某一个tcp端口来接收并处理HTTP请求,这样客户端(一般来说是IE, Firefox,Chrome这样的浏览器)就能够通过HTTP协议来获取服务器上的网页(HTML格式)、文档(PDF格式)、音频(MP4格式)、视频(MOV格式)等等资源。下图描述的就是这一过程:

不仅仅是Apache HTTP Server和Nginx,绝大多数编程语言所包含的类库中也都实现了简单的HTTP服务器方便开发者使用:    
HttpServer (Java HTTP Server )    
Python SimpleHTTPServer    
使用这些类库能够非常容易的运行一个HTTP服务器,它们都能够通过绑定IP地址并监听tcp端口来提供HTTP服务。Apache Tomcat则是Apache基金会下的另外一个项目,与Apache HTTP Server相比,Tomcat能够动态的生成资源并返回到客户端。Apache HTTP Server和Nginx都能够将某一个文本文件的内容通过HTTP协议返回到客户端,但是这个文本文件的内容是固定的——也就是说无论何时、任何人访问它得到的内容都是完全相同的,这样的资源我们称之为静态资源。动态资源则与之相反,在不同的时间、不同的客户端访问得到的内容是不同的,例如:    
包含显示当前时间的页面    
显示当前IP地址的页面    
Apache HTTP Server和Nginx本身不支持生成动态页面,但它们可以通过其他模块来支持(例如通过Shell、PHP、Python脚本程序来动态生成内容)。

如果想要使用Java程序来动态生成资源内容,使用这一类HTTP服务器很难做到。Java Servlet技术以及衍生的Java Server Pages技术可以让Java程序也具有处理HTTP请求并且返回内容(由程序动态控制)的能力,Tomcat正是支持运行Servlet/JSP应用程序的容器(Container):   

Tomcat运行在JVM之上,它和HTTP服务器一样,绑定IP地址并监听TCP端口,同时还包含以下职责:    
①管理Servlet程序的生命周期    
②将URL映射到指定的Servlet进行处理    
③与Servlet程序合作处理HTTP请求——根据HTTP请求生成HttpServletResponse对象并传递给Servlet进行处理,将Servlet中的HttpServletResponse对象生成的内容返回给浏览器    
虽然Tomcat也可以认为是HTTP服务器,但通常它仍然会和Nginx配合在一起使用:

动静态资源分离——运用Nginx的反向代理功能分发请求:所有动态资源的请求交给Tomcat,而静态资源的请求(例如图片、视频、CSS、JavaScript文件等)则直接由Nginx返回到浏览器,这样能大大减轻Tomcat的压力。
负载均衡——当业务压力增大时,可能一个Tomcat的实例不足以处理,那么这时可以启动多个Tomcat实例进行水平扩展,而Nginx的负载均衡功能可以把请求通过算法分发到各个不同的实例进行处理

tomcat、websphere、Jboss、weblogic区别

WebSphere 是 IBM 的软件平台。它包含了编写、运行和监视全天候的工业强度的随需应变 Web 应用程序和跨平台、跨产品解决方案所需要的整个中间件基础设施,如服务器、服务和工具。WebSphere 提供了可靠、灵活和健壮的软件。

JBoss服务器是一种优秀的J2EE服务器,和BEA的Weblogic,IBM的Websphere属于同类产品, JBoss的优势在于具有良好的性价比,实现了所有j2ee的规范和api,支持的标准新,版本快,有开放源码的所有优点,支持热deploy,适合开发环境,尤其是大的团队开发,deploy会拖掉整个团队的效率。文档太少。启动快。JBoss为完全开放源码的免费软件,而且具有良好的运行效率和可靠性,因此已经得到越来越多的J2EE应用开发者的青睐。

WebLogic 是一套基于JAVA功能强大的电子商务套件,提供了许多功能强大的中间件以方便编程人员编写的JSP、SERVLET 等电子商务应用,可以为企业提供一个完整的商务应用解决方案。不适合开发阶段,太慢了,适合于运行环境(收费)。

Tomcat是一个开放源代码、运行servlet和JSP Web应用软件的基于Java的Web应用软件容器。Tomcat由Apache-Jakarta子项目支持并由来自开放性源代码Java社区的志愿者进行维护。Tomcat Server是根据servlet和JSP规范进行执行的,因此我们就可以说Tomcat Server也实行了Apache-Jakarta规范且比绝大多数商业应用软件服务器要好。做为web容器轻量小巧,如果你不是使用ejb开发,那就可以用它,快速方便。

总结

websphere、Jboss、weblogic三者都是javaee的容器,tomcat只是实现了servlet和jsp规范的一个容器。而javaee可不止一个的servelt规范,javaee的全称是Java Enterprise Edition,顾名思义,这是做企业软件开发的规范,javaee出来比较早,那时候可能都还没有ioc、aop这些现在大家都耳熟能详的技术名词,而javaee就有ejb和jndi提供类似定义的规范了,后来各种理论进一步发展和完善,实现技术也越来越好,比如spring的出现,人们在做开发的时候就能有更多的选择,而且由于javaee太过于重量级,同时又隐藏了太多的细节,出现问题之后调试非常困难,开发各种不方便,所以渐渐的大家都不太愿意用javaee的技术栈了...所以也就是你工作这么几年也用不上其他的容器。实际上就连servlet和jsp也都有各种替代技术,比如我们可以用其他的rpc技术来代替servlet做接口的通信,我们可以用Freemaker来代替jsp这种模版技术。具体一点,只需要一个socket server来接收请求,定义相关的协议来解析请求,然后返回对应的内容。比如我们可以用netty来做http server,用jax-rs来定义交互的规范,jax-rs有一个jersey的实现,还支持template技术的集成,也就是说你完全可以用这一套替代你说的tomcat和servlet相关的技术栈...如果企业内部IT系统大型的 推荐用was weblogic ,小工具小系统就用tomcat 简单如果是重量级别的EJB那就是Jboss吧   如果是一般要求敏捷开发  spring搭配tomcat  便宜而且开发效率高

Nginx内部进程模型:

           
外网服务器部署记录(windows server 2008)            
nginx.conf配置文件中(172.16.152.1为外网服务器的本机ip,外网服务器的公网ip为59.46.162.195)            
listen       9091;            
server_name 172.16.152.1;            
            
location /web_project_resources/ {            
                proxy_redirect off;            
                proxy_set_header Host $host;            
                proxy_set_header X-Real-IP $remote_addr;            
                proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;            
                proxy_connect_timeout 5;            
                proxy_send_timeout 30;            
                proxy_read_timeout 10;            
                proxy_pass http://172.16.152.1:9090/web_project_resources/;            
        }            
注意,nginx.conf配置完成后,前台页面的xxx.js里的前端访问后端的js里需要更改为nginx的访问路径:            
如果外网访问:59.46.162.195:9091,如果内网访问:172.16.152.1:9091            
如果此处ip不改,则联调错误。后端配置文件中ip也需要做出相应修改,切换内外网。            
※※※切记,放到服务器后,如果对服务器的js或者html等代码代码文件进行修改后,需要注意文件保存格式,否则会出现乱码(导航栏乱码事件注意!!!)

Nginx+Tomcat搭建高性能负载均衡集群

tomcat已在【大数据前期准备】中安装配置在5个节点上

1)安装nginx(在hadoop01机器上安装即可)    
gcc:nginx编译依赖gcc环境    
apt-get install gcc -c++    
pcre:(Perl Compatible Regular Expressions)是一个Perl库,包括 perl 兼容的正则表达式库。nginx的http模块使用pcre来解析正则表达式.    
apt-get install -y pcre pcre-devel    
# 查看zlib是否安装    
dpkg -l | grep zlib    
# 解决依赖包openssl安装    
sudo apt-get install openssl libssl-dev    
# 解决依赖包pcre安装    
sudo apt-get install libpcre3 libpcre3-dev    
# 解决依赖包zlib安装    
sudo apt-get install zlib1g-dev    
cd /usr/local    
·    
ln -s nginx-1.14.0 nginx    
mkdir /usr/local/nginx    
安装之前需要手动创建上面指定的nginx文件夹,否则make会出错    
2)配置nginx    
配置nginx运行用户    
# 添加nginx组    
groupadd unginx    
# 创建nginx运行账户unginx并加入到unginx组,不允许unginx用户直接登录系统    
useradd -g  unginx unginx -s /bin/false    
配置防火墙    
如果是使用的腾讯服务器,只需要在服务器管理平台添加80端口的安全组就好     
服务器则可以设置防火墙:    
# 修改防火墙配置:     
vi + /etc/sysconfig/iptables    
# 添加配置项     
-A INPUT -m state --state NEW -m tcp -p tcp --dport 80 -j ACCEPT    
# 重启防火墙     
service iptables restart    
    
cd /usr/local/nginx-1.14.0    
./configure --prefix=/usr/local/nginx    
make && make install

cd /usr/local/nginx/sbin    
检查nginx是否安装成功    
./nginx -t    
正确结果显示:    
nginx: the configuration file /usr/local/nginx/conf/nginx.conf syntax is ok    
nginx: configuration file /usr/local/nginx/conf/nginx.conf test is successful    
3)启动nginx    
cd /usr/local/nginx    
sbin/nginx    
ps -ef | grep nginx

访问:http://hadoop01
即可到nginx欢迎页

Nginx开机自启:        
在/etc/init.d/目录下创建名为nginx的文件:        
sudo touch /etc/init.d/nginx        
vim /etc/init.d/nginx        
#!/bin/bash        
        
set -e        
PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin        
DESC="nginx daemon"        
NAME=nginx        
DAEMON=/usr/local/nginx/sbin/$NAME        
SCRIPTNAME=/etc/init.d/$NAME        
        
        
# If the daemon file is not found, terminate the script.        
test -x $DAEMON || exit 0        
        
        
d_start() {        
        $DAEMON || echo -n " already running"        
}        
        
        
d_stop() {        
        $DAEMON –s quit || echo -n " not running"        
}        
        
        
d_reload() {        
        $DAEMON –s reload || echo -n " could not reload"        
}        
        
        
case "$1" in        
    start)        
    echo -n "Starting $DESC: $NAME"        
    d_start        
    echo "."        
    ;;        
stop)        
    echo -n "Stopping $DESC: $NAME"        
    d_stop        
    echo "."        
    ;;        
reload)        
    echo -n "Reloading $DESC configuration..."        
    d_reload        
    echo "reloaded."        
    ;;        
restart)        
    echo -n "Restarting $DESC: $NAME"        
    d_stop        
# Sleep for two seconds before starting again, this should give the        
# Nginx daemon some time to perform a graceful stop.        
    sleep 2        
    d_start        
    echo "."        
    ;;        
*)        
    echo "Usage: $SCRIPTNAME {start|stop|restart|reload}" >&2        
    exit 3        
    ;;        
esac        
exit 0        
脚本授权:chmod +x /etc/init.d/nginx        
如果系统没有sysv-rc-conf服务,则先下载该服务器:apt-get install sysv-rc-conf        
命令行运行:sysv-rc-conf,出现一个页面,以下为页面说明        
设置开机自启的动作:上下键切换到nginx选项,空格选中,q保存退出        
运行级别说明:        
S   表示开机后就会运行的服务        
0   表示关机        
1   表示单用户模式  (类似windows的安全模式)        
2   表示无网络服务的多用户模式        
3   表示多用户模式        
4   系统预留(暂没使用)        
5   表示多用户图形模式        
6   表示重启       

4)配置nginx+tomcat                                
cd /usr/local/nginx/conf                                
先编辑proxy.conf,来配置一些代理基础参数                                
touch proxy.conf                                
vim proxy.conf                                
proxy_redirect          off;                # 重定向指令,                
proxy_set_header        Host $host;                    # 变量$host等于客户端请求头中的Host值。            
proxy_set_header        X-Real-IP $remote_addr;                                
proxy_set_header        X-Forwarded-For $proxy_add_x_forwarded_for;                                #后端的web服务器可以通过X-Forwarded-For获取真实的IP地址,$remote_addr客户端的ip地址
proxy_set_header        X-Forwarded-Proto $scheme;                        # 真实的用户访问协议        
client_max_body_size    300m;                #允许客户端请求的最大单文件字节数。                
client_body_buffer_size 256k;                #缓冲区代理缓冲用户端请求的最大字节数。                
proxy_connect_timeout   60;                #Nginx跟后端服务器连接超时时间。                
proxy_send_timeout      60;                #后端服务器数据回传时间(代理发送超时)                
proxy_read_timeout      60;                #连接成功后,后端服务器响应时间。                
proxy_buffer_size       4k;                #设置代理服务器保存用户头信息的缓冲区大小。                
proxy_buffers           6 32k;                #proxy_buffers缓冲区。                
proxy_busy_buffers_size 64k;                #高负荷下缓冲大小。                
proxy_temp_file_write_size 64k;                #设定缓存文件夹大小。                
vim nginx.conf                                
# 使用的用户和组                                
user root;                                
# 指定工作衍生进程数(一般等于CPU的总核数或总核数的两倍,例如两个四核CPU,则综合数为8.通过命令ps -ef|grep nginx可以看出来设置的是几个,默认是1)                                
worker_processes 4;                                
#指定错误日志存放的路径,错误日志记录级别可选项为:[debug|info|notice|warn|error|crit],默认是crit,记录的日志数量从crit到debug,由少到多。                                
error_log  /usr/local/nginx/logs/nginx_error.log crit;                                
#指定pid存放的路径                                
#pid   /usr/local/nginx/nginx.pid;                                
                                
events {                                
    worker_connections  4096;                # 允许的连接数                
}                                
                                
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"';                                
                                
    #access_log  logs/access.log  main;                                
                                
    sendfile        on;                                
    #tcp_nopush     on;                                
                                
    #keepalive_timeout  0;                                
    keepalive_timeout  65;            #指定了与客户端的keep-alive链接的超时时间。服务器会在这个时间后关闭链接。                                                
    #gzip  on;                                
#负载均衡,故障转移

upstream mycluster { #发到hadoop01上的请求,通过Nginx转发到实际处理请求的服务器                                  
    server hadoop01:8080 weight=1;                    #weight表示访问权重,权重越大表示访问到的机会越大            
    server hadoop02:8080 weight=1;                                
    server hadoop03:8080 weight=1;                                
    server hadoop04:8080 weight=1;                                
    server hadoop05:8080 weight=1;                                
 }                                
                                
    server {                                
        listen       80;                                
        server_name  hadoop01;                #nginx服务名                
                                
        charset uft-8;                                
                                
        #access_log  logs/host.access.log  main;                                
                                
        location / {                                
            root   html;                                
            index  index.html index.htm;                                
        #proxy_pass   http://hadoop01; # 代理:对发送到hadoop01上请求进行代理                                
        proxy_pass   http://mycluster; # 代理:将访问请求转向至服务器集群,mycluster和上面upstream mycluster 对应,                                
    #注意测试环境下tomcat的<Host name="localhost"  appBase="webapps"unpackWARs="true" autoDeploy="true">中必须用localhost,否则做负载均衡时hadoop01之外机器找不到                            
        include proxy.conf; # 引入proxy.conf配置                                
        }                                
                                
    location ~ .*\.(html|js|css|ico|png|bmp|jpg|eot|jpeg|svg|ttf|woff|gif|swf) {                            
            root /usr/local/harFront;                            
            expires 10d;                            
        #expires定义用户浏览器缓存的时间为10天,如果静态页面不常更新,可以设置更长,这样可以节省带宽和缓解服务器的压力                        
            }                           

:    
chrome浏览器查看浏览器缓存:    
输入:chrome://chrome-urls/    
出现所有chrome列表    
找到:chrome://cache,打开可以看到浏览器的缓存

    #指定后台工程                        
    location /harbour/ {                        
              proxy_redirect off;                        
              proxy_set_header Host $host;                        
              proxy_set_header X-Real-IP $remote_addr;                        
              proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;                        
              proxy_connect_timeout 5;                        
              proxy_send_timeout 30;                        
              proxy_read_timeout 10;                        
              proxy_pass http://127.0.0.1:8080/harbour/;                        
            }                        
                            
#error_page  404              /404.html;                            
                            
        # redirect server error pages to the static page /50x.html                            
        #                            
        error_page   500 502 503 504  /50x.html;                            
        location = /50x.html {                            
            root   html;                            
        }                            
                            
        # proxy the PHP scripts to Apache listening on 127.0.0.1:80                            
        #                            
        #location ~ \.php$ {                            
        #    proxy_pass   http://127.0.0.1;                            
        #}                            
                            
        # pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000                            
        #                            
        #location ~ \.php$ {                            
        #    root           html;                            
        #    fastcgi_pass   127.0.0.1:9000;                            
        #    fastcgi_index  index.php;                            
        #    fastcgi_param  SCRIPT_FILENAME  /scripts$fastcgi_script_name;                            
        #    include        fastcgi_params;                            
        #}                            
                            
        # deny access to .htaccess files, if Apache's document root                            
        # concurs with nginx's one                            
        #                            
        #location ~ /\.ht {                            
        #    deny  all;                            
                            
        #access_log  logs/host.access.log  main;                            
                            
        location / {                            
            root   html;                            
            index  index.html index.htm;                            
        }                            
                            
        #error_page  404              /404.html;                            
                            
        # redirect server error pages to the static page /50x.html                            
        #                            
        error_page   500 502 503 504  /50x.html;                            
        location = /50x.html {                           

}

配置完以上文件之后,重启nginx:sbin/nginx -c /usr/local/nginx/conf/nginx.conf
sbin/nginx -s reload
ps -ef | grep nginx

访问:http://hadoop01/index.jsp

为了区分访问的哪个tomcat服务器,在每个节点的cd /usr/software/java/apache-tomcat-8.5.27/webapps/ROOT路径下编辑index.jsp画面,做好标识,保存文件重启tomcat再次从nginx访问tomcat时就会看到区分,看到每次访问的是哪个tomcat,从而做好了故障转移和负载均衡,如果想让一个tomcat访问几率变大,调节weight的权重即可,数值越大访问几率越大!!到此,nginx+tomcat配置完毕。

本地装有nginx和tomcat配置本地环境Nginx+tomcat只需要更改两个文件                    
第一:                    
C:\Windows\System32\drivers\etc\hosts,配置测试环境域名和本地环境域名一致:http://hadoop01/html/Login.html                    
10.10.100.19 hadoop01                    
#127.0.0.1 hadoop01                    
释放哪个访问的就是哪个环境                    
第二:本地nginx的配置文件nginx.conf                    
server {                    
        listen       80;                    
        server_name hadoop01;                    
        #location / {                    
        #        proxy_redirect off;                    
        #        proxy_set_header Host $host;                    
        #        proxy_set_header X-Real-IP $remote_addr;                    
        #        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;                    
        #        proxy_connect_timeout 5;                    
        #        proxy_send_timeout 30;                    
        #        proxy_read_timeout 10;                    
        #        proxy_pass http://localhost:8080/harFront/html/Login.html;                    
        #}                    
                    
    location ~ .*\.(html|js|css|ico|png|bmp|jpg|eot|jpeg|svg|ttf|woff|gif|swf) {                
        root F:/workspace/harFront/WebContent/;                    
        expires 10d;                    
        }                    
        location /harbour/ {            
                proxy_redirect off;                    
                proxy_set_header Host $host;                    
                proxy_set_header X-Real-IP $remote_addr;                    
                proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;                    
                proxy_connect_timeout 5;                    
                proxy_send_timeout 30;                    
                proxy_read_timeout 10;                    
                proxy_pass http://localhost:8080/harbour/;                    
        }                    
        }       

一台服务器,多级别前后台之间nginx配置,样例:                
首先要确定C:\Windows\System32\drivers\etc 路径下的hosts文件中域名解析的正确性                
配置nginx的nginx.conf的主要部分                
     server {                
        listen       80;                
        server_name localhost;                
        #location / {                
        #        proxy_redirect off;                
        #        proxy_set_header Host $host;                
        #        proxy_set_header X-Real-IP $remote_addr;                
        #        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;                
        #        proxy_connect_timeout 5;                
        #        proxy_send_timeout 30;                
        #        proxy_read_timeout 10;                
        #        proxy_pass http://localhost:8080/harFront/html/Login.html;                
        #}                
        location ~ .*\.(html|js|css|ico|png|bmp|jpg|eot|jpeg|svg|ttf|woff|gif|swf) {        
        root D:/HBuilderProject/;                #静态文件存放目录
        expires 10d;                
        }                
        location /web_project_resources/ {        
                proxy_redirect off;                
                proxy_set_header Host $host;                
                proxy_set_header X-Real-IP $remote_addr;                
                proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;                
                proxy_connect_timeout 5;                
                proxy_send_timeout 30;                
                proxy_read_timeout 10;                
                proxy_pass http://127.0.0.1:8080/web_project_resources/;                
        }                
        }                
                
启动nginx和tomcat访问URL:                
http://localhost/maintenance_front/html/wzjw_html_system_departmentEmployee.html                
此URL的localhost是nginx配置文件nginx.conf中server_name的指定                
由于后端是一个web工程对应三个业务工程,所以后端指定的是web工程:web_project_resources                
三个前端工程分别对应三个业务工程,都在D:/HBuilderProject/此目录下                
由于没有指定具体工程静态文件,所以URL访问时候需要指定前端工程maintenance_front                
ajax中映射后端工程的URL:                
http://localhost/web_project_resources/system/departments                
此URL的localhost也是nginx配置文件nginx.conf中server_name的指定                
web_project_resources是后端web工程,/system/departments是controller中控制的路径

猜你喜欢

转载自blog.csdn.net/qq_36632174/article/details/103885086