Nginx实现反向代理(同一服务器下不同端口服务映射到80端口)

来源:互联网 发布:淘宝首页在线制作 编辑:程序博客网 时间:2024/06/06 01:43

本文欢迎转载,转载请注明出处,谢谢! http://blog.csdn.net/colton_null 作者:喝酒不骑马 Colton_Null from CSDN


前言

之前发布过一篇如何在Tomcat中配置二级域名。现在发现几个月前的我太年轻了(哎,过几个月后我同样还会说现在的我很年轻,哈哈)。Tomcat确实可以配置二级域名,将不同二级域名的请求配置到不同的服务。但前提是这些服务都放在一个Tomcat里运行,如果其中一个服务需要更新重新部署,那这个Tomcat下其他的应用不也跟着一起停服了么。

好在之前那个项目,都是一些静态资源,所以直接在一个Tomcat下配置也无妨。

那怎么样才能实现如下的需求:只有一台服务器,里面部署了3个web应用。3个web应用分别部署在不同端口下的Tomcat中,假设端口为8080,8081,8082。通过访问www.mayuzhe.com访问的是8080端口服务,访问admin.mayuzhe.com访问的是8081的服务,访问video.mayuzhe.com访问的是8082的服务。

总不能让用户访问的时候带着端口号(例如:www.mayuzhe.com:8081)进行访问吧?所以在这里,就需要一种工具,将原本对80端口的请求分别映射到服务器内部不同的端口。这个功能用Nginx即可实现。

Windows下安装Nginx

因为这次项目用的服务器是Win Server 2008的,所以这里重点介绍一下windows下Nginx环境的搭建。

首先去Nginx官网http://nginx.org/en/。点击右侧【download】,选择Mainline version下的Windows版本。我在写这篇博客时的的nginx版本是nginx/Windows-1.13.6。

下载后解压zip压缩包,将nginx-1.13.6文件夹拷贝到你自定义的一个目录中即可,我的是D:\dev_env\nginx

现在,就可以运行nginx服务了。

配置反向代理

不过在运行服务之前,需要先配置一下反向代理。
打开nginx-1.13.6/conf目录。编辑nginx.conf文件。

在http{}中填下一个server{}

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;    #gzip  on;#这里添加反向代理server配置代码    server {        listen 80;        server_name www.mayuzhe.com;        location / {            proxy_pass http://127.0.0.1:8080;        }    }

重点就是这个server{}

这里listen代表监听对80端口的请求。
server_name为访问的域名。
proxy_pass是需要映射到哪个服务的哪个端口下。

添加完后,保存conf文件。
至此,反向代理就配置完了。

大功告成

在本地启动一个Tomcat,端口号为8080.
修改hosts文件,添加127.0.0.1 www.mayuzhe.com
启动Nginx服务
然后在浏览器访问 www.mayuzhe.com ,不出意外的话就能出现tomcat的默认界面了。

有关Nginx的基本命令

在nginx目录下,摁住shift + 点击右键,选择【在此处打开命令窗口】
1.启动
start nginx 或者 nginx.exe

2.停止
nginx.exe -s stop 或者 nginx.exe -s quit
其中,stop是立即结束服务,不保存相关信息;quit则是保存相关信息并按流程退出nginx服务。

3.重启nginx
nginx.exe -s reload

4.查看nginx版本
nginx -v

阅读全文
0 0
原创粉丝点击