在学习Host碰撞的时候发现要学到Nginx代理的内容
整体思路:配置两个Tomcat服务,然后通过Nginx服务器配置的反向代理,实现代理到两个Tomcat服务器上访问对应的服务页面。
使用的操作系统为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系统的压缩包
然后使用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
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启动成功。
6.配置服务访问页面
在tomcat的目录文件中,进入webapps文件夹下创建edu文件夹并进入edu文件夹创建8080.html文件:
webapps目录下
mkdir edu
cd edu
vim 8080.html
内容为:this is tomcat 8080 page! hello 8080
完成之后输入链接访问页面
另一个Tomcat文件夹为tomcat8081,配置同样参照上面的配置操作。访问页面配置文件操作及内容为:
tomcat8081的webapps目录下
mkdir com
cd com
vim 8081.html
内容为:this is tomcat 8081 page! hello 8081
二、安装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的目录说明如下:
查看端口占用情况: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文件:
完整的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服务,
四、访问效果
实现的反向代理效果为:刚开始需要访问Tomcat服务器的资源时,需要在地址栏分别输入对应的请求URL进行服务访问
通过配置反向代理之后,通过Nginx创建虚拟服务,将实际的Tomcat访问进行代理,配置nginx.conf利用8082端口代理8080/edu/8080.html的资源页面,8083端口代理8081/edu/8081.html的资源页面,进而实现通过Nginx对tomcat服务的反向代理。
五、参考链接
\