Centos7 Nginx 反向代理 Tomcat

本贴最后更新于 2022 天前,其中的信息可能已经水流花落

      在服务器搭建的 solo 一直没有用 Nginx,并且直接在 Tomcat 把端口改成 80,443,并且安装 SSL 证书。现因需添加其他服务,故启用 Nginx,便于方便管理。

一、下载 Nginx 安装包

      http://nginx.org/en/download.html,选择适合自己的 Nginx 版本,这里选的是最新版,下载后并上传到 Centos 服务器。

二、安装之前准备工作

      执行下面的命令,安装 nginx 依赖库

  	yum install gcc-c++
  	yum install pcre
 	yum install pcre-devel
 	yum install zlib 
  	yum install zlib-devel
  	yum install openssl
  	yum install openssl-devel

      解压安装包

        tar -zxvf nginx-1.15.12

      切换到解压目录下,执行

       ./configure

      如果没错错误出现,说明当前可以安装 Nginx,执行

       make
       make install

      成功后,默认安装位置为 /usr/local/nginx

三、设置开机自启动 Nginx

      执行以下命令写自启动命令

 	cd /lib/systemd/system/
 	vim nginx.service

      文件内容如下

        [Unit] 
 	Description=nginx 
  	After=network.target      
 	[Service]  
 	Type=forking  
 	ExecStart=/usr/local/nginx/sbin/nginx 
 	ExecReload=/usr/local/nginx/sbin/nginx reload 
 	ExecStop=/usr/local/nginx/sbin/nginx quit 
 	PrivateTmp=true      
 	[Install]  
 	WantedBy=multi-user.target

      退出并保存文件,执行 systemctl enable nginx.service 使 nginx 开机启动。
      启动 systemctl start nginx.service    
      终止 systemctl stop nginx.service    
      重启 systemctl restart nginx.service    

四、验证是否成功

      输入网址 http://xxx.xxx.xxx.xxx 若出现欢迎界面,即安装成功。

五、反向代理 Tomcat

      在这之前 tomcat 已可以加端口正常访问,我的 tomcat 已经默认 80 443 端口,并添加 SSL 证书,把证书撤掉,端口改回默认 8080 8443 端口。
      购买下载 SSL 证书,个人反正就是免费的,阿里申请一个。下载 Nginx 版本的 SSL 放到 /usr/local/nginx/cert
      在目录 /usr/local/nginx/conf 下,并修改配置文件 nginx.conf
      注意在修改的时候 一定要备份! 真是血的教训!
      在文件 http {}中进行配置,Nginx 默认是监听 80 端口的,还有好多注释,不用管,删掉

    upstream myblog{
        server localhost:8080;
    }    
    server {
        listen       80;
        server_name  aeneag.xyz www.aeneag.xyz;
        rewrite ^/(.*)$ https://aeneag.xyz/$1 permanent;
    }
    server {
        listen 443  ssl;
        server_name aeneag.xyz www.aeneag.xyz;
        root html;
        index index.html index.htm;
        ssl_certificate  ../cert/aeneag.xyz.pem;
        ssl_certificate_key ../cert/aeneag.xyz.key;
        ssl_session_timeout 5m;
        ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4;
        ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
        ssl_prefer_server_ciphers on;
        location / {
              root html;
              index index.html index.htm;
              proxy_pass http://myblog$request_uri;
              proxy_set_header  Host $host:$server_port;
              proxy_set_header  X-Real-IP  $remote_addr;
              client_max_body_size  10m;
        }
    }

      注意:新版的 Nginx 没有 ssl on; 变成了 listen 443 ssl;
      保存退出后,在 /usr/local/nginx/sbin 目录下,执行 ./nginx -t 查看配置文件是否正确,如果正确重启 Nginx 服务 systemctl restart nginx.service 
      Tomcat 那边,需更改 server.xml 配置文件中的 host 节点

六、问题解决

      因之前 linux 服务器上只有 tomcat 一个服务,并没有用 Nginx,现需在服务器上跑其他项目,故更改以便管理。

  • Linux

    Linux 是一套免费使用和自由传播的类 Unix 操作系统,是一个基于 POSIX 和 Unix 的多用户、多任务、支持多线程和多 CPU 的操作系统。它能运行主要的 Unix 工具软件、应用程序和网络协议,并支持 32 位和 64 位硬件。Linux 继承了 Unix 以网络为核心的设计思想,是一个性能稳定的多用户网络操作系统。

    943 引用 • 943 回帖
  • NGINX

    NGINX 是一个高性能的 HTTP 和反向代理服务器,也是一个 IMAP/POP3/SMTP 代理服务器。 NGINX 是由 Igor Sysoev 为俄罗斯访问量第二的 Rambler.ru 站点开发的,第一个公开版本 0.1.0 发布于 2004 年 10 月 4 日。

    311 引用 • 546 回帖
  • Tomcat

    Tomcat 最早是由 Sun Microsystems 开发的一个 Servlet 容器,在 1999 年被捐献给 ASF(Apache Software Foundation),隶属于 Jakarta 项目,现在已经独立为一个顶级项目。Tomcat 主要实现了 JavaEE 中的 Servlet、JSP 规范,同时也提供 HTTP 服务,是市场上非常流行的 Java Web 容器。

    162 引用 • 529 回帖

相关帖子

欢迎来到这里!

我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。

注册 关于
请输入回帖内容 ...