使用nginx,使得可以从浏览器中下载tomcat的日志文件

在本文章中,我们假设Tomcat已经在服务器上运行,并介绍使用Nginx来实现从浏览器上下载Tomcat日志的方法。

有一項优点是可以轻松地安装,并且不需要特意使用ssh来查看日志文件。

我确认了Ubuntu18.04上的操作。

安装Nginx

sudo apt-get update
sudo apt-get install nginx

只要运行”systemctl status nginx”命令,并确认其状态为”active”,就表示Nginx已经成功安装。

$ systemctl status nginx
● nginx.service - A high performance web server and a reverse proxy server
   Loaded: loaded (/lib/systemd/system/nginx.service; enabled; vendor preset: enabled)
   Active: active (running) since Tue 2020-08-11 02:04:32 WIB; 1h 55min ago
(以下略)

nginx的配置

我将编辑nginx.conf文件。

sudo vi /etc/nginx/nginx.conf

编辑的内容如下所示。

添加服务器上下文

在http的上下文中添加server的上下文。

...
http {
  ...
  server {
    listen 8888; # portは任意で変更してください。

    location /logs {
      alias /path/to/logs; # tomcatのログがあるディレクトリを指定します。
      autoindex on; # autoindexオプションでファイルのリストを表示できるようにします。
    }
  }
}

用户可以更改worker_processes的设置(可选)。

userは、普段sshで利用しているユーザーを指定しておくと、403 Forbiddenになるのを事前に防げます。

何らかの事情でuserを変更しない場合、は、後述の方法でも回避できます。

worker_processはnginxが実行する際のworkerの数を指定する設定です。デフォルトではautoになっているのですが、ログをダウンロードするのみであれば(よほどの大人数でサーバーを利用していない限りは)1つで十分なのでworker_processes 1;としておくことで余計なリソースを使わずに済みます。

确认设置

在设置完成后,您可以使用 `nginx -t` 命令来检查设置是否正确。

$ sudo nginx -t
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful

如果配置正确的话,可以通过systemctl reload nginx重新加载配置,并在浏览器中进行确认是否能够显示。
http://<服务器的IP地址>:8888/logs
如果可以显示日志列表,则表示配置已完成。

附注:如果显示403 Forbidden错误

如果用户没有按照上述所指定的方式进行指定,那么worker进程将在www-data用户下运行。

$ ps aux | grep nginx
root     21681  0.0  0.0 141252  7084 ?        Ss   02:04   0:00 nginx: master process /usr/sbin/nginx -g daemon on; master_process on;
# www-dataユーザーでworkerが実行されている
www-data  22293  0.0  0.0 143864  7224 ?        S    04:00   0:00 nginx: worker process
username  22338  0.0  0.0  14428  1048 pts/1    S+   04:42   0:00 grep --color=auto nginx

然而,由于文件的所有者不是www-data,所以在nginx上无法查看该文件。

$ ll /path/to/apache-tomcat/ #apache-tomcatフォルダ直下にlogsフォルダがあるという前提
(略)
drwxr-x--- 2 username username       4096 Agu  7 00:48 logs/

如果您想在不更改nginx用户的情况下进行处理,您可以通过给予logs文件夹Read权限来避免403 Forbidden错误的发生。

# Read権限を再帰的に付与
chmod -R o+r /path/to/logs
# フォルダ遷移するには実行権限が必要なので、併せて付与
chmod o+x /path/to/logs

请参考

    http://nginx.org/en/docs/http/ngx_http_autoindex_module.html#autoindex
bannerAds