使用Nginx(OpenResty)转发域名到非80端口,nginxopenresty


今天我们来学习一个比较实际的技能,那就是如何通过域名访问你的Web项目呢?主要解决以下几个问题:

1、如何得到一个可用的域名
2、Web工程的端口一般是8080或8081等等的非80端口,如何访问域名的时候能转发到这些非80端口呢?
3、域名不可能只对应一个工程,这样太浪费了,如何将带不同后缀的域名指向不同的工程?例如:使www.example.com/work、www.example.com/study 指向不同的网站

对于第一个问题,有钱就可以解决,可以直接从阿里云买的域名;本节要解决的是后面的问题,假设我们现在已经有了域名:www.test.com,一个对应到该域名的服务器(192.168.111.111),一个部署在tomcat8080端口上的JavaWeb项目:MYWEB。一般我们是通过http://192.168.111.111:8080/MYWEB来访问网站,现在要实现的是通过http://www.test.com/MYWEB来访问,下面讲解具体步骤。

1 安装OpenResty

OpenResty ™ 是一个基于 Nginx 与 Lua 的高性能 Web 平台,其内部集成了大量精良的 Lua 库、第三方模块以及大多数的依赖项。用于方便地搭建能够处理超高并发、扩展性极高的动态 Web 应用、Web 服务和动态网关。

想要了解详细内容可以访问官网:http://openresty.org/cn/,这里我们只是用到了其中Nginx域名转发的功能,所以下载安装Nginx也可以。

到官网http://openresty.org/cn/download.html复制最新的下载地址https://openresty.org/download/openresty-1.11.2.1.tar.gz

使用wget命令下载:

wget https://openresty.org/download/openresty-1.11.2.1.tar.gz

解压:

tar -xvf openresty-1.11.2.1.tar.gz

安装依赖(ubuntu下用apt-get,centos用yum)

apt-get install libreadline-dev libncurses5-dev libpcre3-dev libssl-dev perl

安装:

cd /data/install/openresty-1.11.2.1
./configure --prefix=/data/install/openresty-1.11.2.1
make
make install

注意这里的第一步如果报错一般是因为缺少依赖,添加依赖即可:

yum -y install pcre-devel openssl openssl-devel

启动命令:

/data/install/openresty-1.11.2.1/nginx/sbin/nginx

重新加载命令:

/data/install/openresty-1.11.2.1/nginx/sbin/nginx -s reload

2 修改Nginx配置文件实现域名转发

修改配置文件

vi /data/install/openresty-1.11.2.1/nginx/conf/nginx.conf

将以下内容添加到 http 节点下:

    server {
           listen  80;
       charset utf-8;
       server_name  www.test.com;
        location /MYWEB  {
            client_max_body_size 100m;
            proxy_connect_timeout 1200;
            proxy_send_timeout 1200;
            proxy_read_timeout 1200;
            root /data/install/tomcat_myweb/webapps;
            proxy_pass http://localhost:8080;
        }
    }

listen 80表示要监听的是80端口
server_name www.test.com是对应的域名
location /MYWEB是域名后跟的子后缀,这里就是http://www.test.com/MYWEB
root /data/install/tomcat_myweb/webapps是tomcat项目发布路径
proxy_pass http://localhost:8080是要实际转发到的ip和端口

如果想要访问到其他子路径的项目,如http://www.test.com/OTHERWEB,只要在 http 添加一个 server 并修改对应的配置即可

3 更改tomcat配置文件

配置完上面的内容以后,你输入http://www.test.com/MYWEB会发现打开的并不是你的项目网站,而是tomcat的官网页面,这是因为你转发到的是http://localhost:8080,而要访问到你的项目网站还需要加上后缀http://localhost:8080/MYWEB,我们可以通过修改tomcat的配置文件实现重定向。

cd /data/install/tomcat_myweb/webapps/ROOT

删除ROOT下的所有文件,添加index.html文件

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<meta http-equiv="refresh" content="0.1;url=/MYWEB">
</head>

<body>
</body>
</html>

此时你访问http://www.test.com就会自动重定向到http://www.test.com/MYWEB,域名转发成功。


Men were born to be suffering, the pain of struggle, or the pain of regret?

相关内容

    暂无相关文章