Ubuntu安装与配置tomcat + Nginx配置反向代理

619 阅读4分钟

在学习Host碰撞的时候发现要学到Nginx代理的内容

整体思路:配置两个Tomcat服务,然后通过Nginx服务器配置的反向代理,实现代理到两个Tomcat服务器上访问对应的服务页面。

image-20220527160845951.png

使用的操作系统为Ubuntu 18.04.6 LTS (GNU/Linux 4.15.0-176-generic x86_64)

一、安装Tomcat

首先要说明的一点是Tomcat的运行时要依赖于Java环境的,所以在安装Tomcat之前要先安装Java环境

1 先卸载java

(1) apt-get update
​
(2) apt-cache search java | awk '{print($1)}' | grep -E -e '^(ia32-)?(sun|oracle)-java' -e '^openjdk-' -e '^icedtea' -e '^(default|gcj)-j(re|dk)' -e '^gcj-(.*)-j(re|dk)' -e 'java-common' | xargs sudo apt-get -y remove
​
(3) apt-get -y autoremove
​
2、清除配置信息: dpkg -l | grep ^rc | awk '{print($2)}' | xargs sudo apt-get -y purge
​
3、清除java配置及缓存: bash -c 'ls -d /home/*/.java' | xargs sudo rm -rf
​
4、手动清除JVMs:  rm -rf /usr/lib/jvm/*

2.安装Java环境

sudo apt install openjdk-8-jdk

以上一条语句就完成java安装【包括jdk和jre】。

3 配置java环境

打开文件

sudo vim /etc/profile 

设置环境变量(在文件的最后追加)

export JAVA_HOME=/usr/lib/jvm/java-8-openjdk-amd64
export JRE_HOME=$JAVA_HOME/jre
export CLASSPATH=$JAVA_HOME/lib:$JRE_HOME/lib:$CLASSPATH
export PATH=$JAVA_HOME/bin:$JRE_HOME/bin:$PATH

4.安装Tomcat

首先需要先到Tomcat官网上下载对应linux系统的压缩包

image-20220527110457506.png

然后使用xftp工具将tomcat压缩包上传到服务器中,并创建对应的文件夹配置两个tomcat服务

sudo mkdir /home/gxust/tomcat8080 &&  cd /home/gxust/tomcat8080
​
sudo  tar -zxvf apache-tomcat-8.5.79.tar.gz
​
sudo chmod 755 -R apache-tomcat-8.5.79

image-20220527110843060.png

5.配置Tomcat并启动

进入tomcat的配置路径bin文件夹下,修改tomcat的启动配置文件startup.sh

vim startup.sh

将以下环境变量配置追加到最后一行,esc + :wq保存退出

#set java environment
export JAVA_HOME=/usr/lib/jvm/java-8-openjdk-amd64
export JRE_HOME=$JAVA_HOME/jre
export CLASSPATH=$JAVA_HOME/lib:$JRE_HOME/lib:$CLASSPATH
export PATH=$JAVA_HOME/bin:$JRE_HOME/bin:$PATH
 
#tomcat
 
export TOMCAT=/home/huatec/tomcat/apache-tomcat-8.5.72

退回到bin下执行,sudo ./startup.sh 然后在浏览器输入服务器的IP+端口,就可以看见Tomcat启动成功。

image-20220527111718669.png

6.配置服务访问页面

在tomcat的目录文件中,进入webapps文件夹下创建edu文件夹并进入edu文件夹创建8080.html文件:

webapps目录下
mkdir edu
cd edu
vim 8080.html
内容为:this is tomcat 8080 page! hello 8080

完成之后输入链接访问页面

image-20220527112313984.png

另一个Tomcat文件夹为tomcat8081,配置同样参照上面的配置操作。访问页面配置文件操作及内容为:

tomcat8081的webapps目录下
mkdir com
cd com
vim 8081.html
内容为:this is tomcat 8081 page! hello 8081

image-20220527112417090.png

二、安装Nginx

1. 安装依赖包

apt-get install gcc
apt-get install libpcre3 libpcre3-dev
apt-get install zlib1g zlib1g-dev
# Ubuntu14.04的仓库中没有发现openssl-dev,由下面openssl和libssl-dev替代
#apt-get install openssl openssl-dev
sudo apt-get install openssl 
sudo apt-get install libssl-dev

2. 安装nginx

在根目录下执行:

cd /usr/local
mkdir nginx
cd nginx
wget http://nginx.org/download/nginx-1.13.7.tar.gz
tar -xvf nginx-1.13.7.tar.gz 

3. 编译nginx

# 进入nginx目录
/usr/local/nginx/nginx-1.13.7
# 执行命令
./configure
# 执行make命令(若执行出现报错,请确认依赖是否安装ok,或去找度娘⑧~~🙂)
make
# 执行make install命令(可忽略此过程中的报错,尝试启动nginx~~~,在启动nginx过程中遇到具体报错再给予响应解决。)
make install

4. 启动nginx

#进入nginx启动目录 注意要进入启动目录下执行命令
cd /usr/local/nginx/sbin
# 启动nginx
./nginx

其他命令:

完全卸载删除nginx

find / -name nginx | xargs rm -rf

Nginx的目录说明如下:

image-20220527115740975.png

查看端口占用情况:netstat -ntulp

三、配置反向代理

配置反向代理的话要对Nginx的nginx.conf文件配置server,将地址栏中的地址URL通过配置文件中的server将URL转发到另一个资源服务以实现通过Nginx对tomcat服务的反向代理。

1.同时启动两个Tomcat服务

进入tomcat的conf目录,修改server.xml文件。另一个Tomcat同样修改,注意对应的端口号。

参考链接:Linux同时启动多个Tomcat: https://blog.csdn.net/Awt_FuDongLai/article/details/123122231

2.配置nginx.conf

注意在修改配置文件前先将Nginx关闭

强制停止Nginx:

[root@LinuxServer ~]# pkill -9 nginx

进入刚刚安装的nginx文件下进行以下操作并修改nginx.conf文件:

image-20220527114519940.png

完整的Nginx配置文件如下:

注意点是server里面的location每一项配置完后面都要加上 : ;


#user  nobody;
worker_processes  1;

#error_log  logs/error.log;
#error_log  logs/error.log  notice;
#error_log  logs/error.log  info;

#pid        logs/nginx.pid;


events {
    worker_connections  1024;
}


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 {
        listen       80;
        server_name  localhost;

        #charset koi8-r;

        #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 {
            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;
        #}
    }

    server {
        listen       8082;
        # 本机IP
        server_name  192.168.1.52;

        location / {
        	# 代理转发的地址
            proxy_pass  http://192.168.1.52:8080/edu/8080.html;
            # 资源文件所在位置:tomcat的资源访问页面
            root /home/gxust/tomcat8080/apache-tomcat-8.5.79/webapps/edu;
            # 默认的访问页面文件
            index 8080.html 8080.htm;
        }

        # 当状态码为500、502、503、504时,则访问50x.html 
        error_page   500 502 503 504  /50x.html;  
        # 定义50x.html所在路径 
        location = /50x.html { 
            
            root   html;  
        } 
    }

    server {
        listen       8083;
        server_name  192.168.1.52;

        location / {
            proxy_pass  http://192.168.1.52:8081/com/8081.html;
            root /home/gxust/tomcat8081/apache-tomcat-8.5.79/webapps/com;
            index 8081.html 8081.htm;
        }

        # 当状态码为500、502、503、504时,则访问50x.html
        error_page   500 502 503 504  /50x.html;   
        # 定义50x.html所在路径 
        location = /50x.html { 
            root   html;  
        } 
    }

    # another virtual host using mix of IP-, name-, and port-based configuration
    #
    #server {
    #    listen       8000;
    #    listen       somename:8080;
    #    server_name  somename  alias  another.alias;

    #    location / {
    #        root   html;
    #        index  index.html index.htm;
    #    }
    #}


    # HTTPS server
    #
    #server {
    #    listen       443 ssl;
    #    server_name  localhost;

    #    ssl_certificate      cert.pem;
    #    ssl_certificate_key  cert.key;

    #    ssl_session_cache    shared:SSL:1m;
    #    ssl_session_timeout  5m;

    #    ssl_ciphers  HIGH:!aNULL:!MD5;
    #    ssl_prefer_server_ciphers  on;

    #    location / {
    #        root   html;
    #        index  index.html index.htm;
    #    }
    #}

}

最后保存并退出,进入nginx/sbin目录下执行 ./nginx 开启Nginx服务,

image-20220527114834680.png

四、访问效果

实现的反向代理效果为:刚开始需要访问Tomcat服务器的资源时,需要在地址栏分别输入对应的请求URL进行服务访问

image-20220527115054475.png

image-20220527115107703.png

通过配置反向代理之后,通过Nginx创建虚拟服务,将实际的Tomcat访问进行代理,配置nginx.conf利用8082端口代理8080/edu/8080.html的资源页面,8083端口代理8081/edu/8081.html的资源页面,进而实现通过Nginx对tomcat服务的反向代理。

image-20220527115534661.png

image-20220527115552023.png

五、参考链接

blog.csdn.net/weixin_4578…

blog.csdn.net/zxd14355137…

blog.csdn.net/Awt_FuDongL…

www.jianshu.com/p/88f9ef3b8…

\