前言
记录一次使用 tomcat 部署 opengrak 代码查看工具,再使用 apache 或 nginx 部署 ladp 认证协议(tomcat也可直接配置 ldap 协议认证,但有些参数没搞懂,没调试通)去反向代理 tomcat,以达到对 tomcat 内应用进行认证使用的目的,在此着重于记录整理三大服务器的基本使用与区别。
Tomcat 服务器配置
配置运行
使用源码安装
- tomcat 需要依赖 java,所以首先要安装一个 java 版本,在此不再赘余。
- 进到 Apache tomcat 官网 下载需要的版本,我这边下载的是 9.0 的源码包,源码包无需安装,直接使用
基本使用(源码包)
# 在源码放置路径下执行 startup.sh 脚本即可启动服务
${CATALINA_HOME}/bin/startup.sh
# 在源码防止路径下执行 shutdown.sh 脚本即可停止服务
${CATALINA_HOME}/bin/shutdown.sh
在 Linux 中还可以使用 apt install tomcat
安装 tomcat
应用部署
- 如果应用有 war 包则可以将 war 包拷贝到源码放置路径下的 webapps 路径下,如果在 windows 系统下会自动解压,如果在 linux 情况下,需要使用
unzip xxx.war
对其进行解包,生成一个文件夹,然后在浏览器中进行访问
127.0.0.1:8080/xxx(解压后的文件夹名称)
- 如果没有 war 包,直接拷贝进路径,直接访问
127.0.0.1:8080/xxx(应用文件夹名)
Tomcat 配置 openldap 添加验证
tomcat 可以直接部署 ldap 服务,但是本人测试不同,有几个参数一直未弄懂,所以就不在此说明,感兴趣的可以试一试
Apache 服务器配置(apache2)
配置运行
- 在 Linux 中可以直接使用
apt install apache2
进行 apache2 的安装 - apache 和 apache2 存在差异,可自行了解
- 也可在官网下载安装包进行安装
基本使用
- 安装成功后可以通过访问
127.0.0.1:80
访问 apache 主页 - 相关命令
产生的启动和停止文件是:/etc/init.d/apache2
启动:sudo apache2 start
停止:sudo apache2 stop
重新启动:sudo apache2 restart
配置文件保存在 /etc/apache2 目录下
- 文件作用
包含动态模块的配置: Include /etc/apache2/mods-enabled/.load Include /etc/apache2/mods-enabled/.conf
包含用户自己的配置: Include /etc/apache2/httpd.conf
包含端口监听的配置: Include /etc/apache2/ports.conf
包含一般性的配置语句片断: Include /etc/apache2/conf.d/
包含虚拟主机的配置指令: Include /etc/apache2/sites-enabled/
反向代理 Tomcat
# 在 sites-available 路径中复制一个 conf 配置文件
> cp -r 000-default.conf test.conf
# 在该文件中添加配置
# 首先得确保下面的包都存在,没有得自行安装
echo '
LoadModule proxy_module /usr/lib/apache2/modules/mod_proxy.so
LoadModule proxy_ajp_module /usr/lib/apache2/modules/mod_proxy_ajp.so
LoadModule proxy_balancer_module /usr/lib/apache2/modules/mod_proxy_balancer.so
LoadModule proxy_connect_module /usr/lib/apache2/modules/mod_proxy_connect.so
LoadModule proxy_ftp_module /usr/lib/apache2/modules/mod_proxy_ftp.so
LoadModule proxy_http_module /usr/lib/apache2/modules/mod_proxy_http.so
ServerName test.com
<VirtualHost 127.0.0.1:80> # 监听 80 端口
ServerName test.com
ServerAdmin test.com
ServerAlias test.com
ProxyVia Off
ProxyRequests Off
DocumentRoot ${CATALINA_HOME}webapps/test # tomcat 中应用路径
ErrorLog "logs/test"
TransferLog "logs/test"
ProxyPreserveHost On
<Proxy *>
Order deny,allow
Allow from all
</Proxy> # 最主要的部分
ProxyPass / http://localhost:8080/test/
ProxyPassReverse / http://localhost:8080/test/
<Location / >
Order allow,deny
Allow from all
</Location>
</VirtualHost>
' > test.conf
至此配置完成,访问 127.0.0.1:80
的时候会跳转到 127.0.0.1:8080/test
配置 openldap 添加验证
在已经有 ldap 服务器端的前提下,这里仅配置 apache2 端
在 /etc/apache2.conf 添加配置
<Directory /> # 这里是针对路径下的页面进行验证,好像是有一个对访问端口进行验证的标签,觉得那种的应该更好用
Options Indexes FollowSymLinks
Allowoverride authconfig
Order allow,deny
Allow from all
AuthName "Welcome to Opengrok"
AuthType basic
AuthBasicProvider ldap
# AuthLDAPAuthoritative on
# AuthLDAPEnabled on
AuthLDAPURL ldap://<ip>/ou=people,dc=test,dc=net?uid
AuthLDAPGroupAttribute memberUid
AuthLDAPGroupAttributeIsDN off
require ldap-group cn=mobdrid,ou=group,dc=test,dc=net
require ldap-attribute gidNumber=1012
</Directory>
*以上很多参数需要换成自己的参数
apache 和 tomcat的区别
- apache 处理静态文件,tomcat 可以处理动态页面
- 大致可以抽象为:apache 好比一辆可以拉货的车,tomcat 比作水箱,动态应用好比水,不可以直接用车拉水,只能先用水箱装水,然后再用车拉水箱
Nginx 服务器配置
配置运行
- 可以使用
apt install
安装 nginx - 由于我们需要添加 ldap验证,所以使用源码安装 nginx,官网下载安装包,在开始安装前需要下载一个模块:
git clone https://github.com/kvspb/nginx-auth-ldap.git
nginx 编译时候加入 --add-module=/usr/local/src/nginx-auth-ldap
基本使用
nginx -s quit 优雅停止nginx,有连接时会等连接请求完成再杀死worker进程
nginx -s reload 优雅重启,并重新载入配置文件nginx.conf
nginx -s reopen 重新打开日志文件,一般用于切割日志
nginx -v 查看版本
nginx -t 检查nginx的配置文件
nginx -h 查看帮助信息
nginx -V 详细版本信息,包括编译参数
nginx -c filename 指定配置文件
反向代理 Tomcat,添加 ldap 验证登录
- 添加 ldap 配置到 conf/nginx.conf 中 http 标签中
ldap_server openldap{
url ldap://<ip>:<host>/dc=longcheer,dc=net?uid?sub?(objectClass=person);
binddn "cn=admin,dc=test,dc=net";
binddn_passwd "passwd";
group_attribute memberUid;
group_attribute_is_dn on;
# require valid_user;
}
- 在 conf/nginx.conf 中 http 标签中添加
upstream tomcat {
server 127.0.0.1:8080 weight=1; # 代理的地址
}
server {
listen 8000;
server_name localhost;
auth_ldap "Forbidden";
auth_ldap_servers openldap; # 上面配置的 ldap_server 名称
#charset koi8-r;
#access_log logs/host.access.log main;
location / {
root html;
index index.html index.htm;
# auth_ldap "Forbidden";
# auth_ldap_servers openldap;
proxy_pass http://tomcat;
proxy_redirect default;
proxy_connect_timeout 10;
}