Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/apache/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如果一台服务器安装了nginx和apache,我如何找出它在其网站上使用的是哪一个?_Apache_Nginx_Scripting_Ansible - Fatal编程技术网

如果一台服务器安装了nginx和apache,我如何找出它在其网站上使用的是哪一个?

如果一台服务器安装了nginx和apache,我如何找出它在其网站上使用的是哪一个?,apache,nginx,scripting,ansible,Apache,Nginx,Scripting,Ansible,我们有很多服务器和vhost,其中一些使用nignx,一些使用httpd或apache作为其域。我想写一个ansible脚本,将vhost用于其站点的web服务器上的信息提取出来,问题是很多服务器都安装了所有3台web服务器,但只有一台用于运行站点,其他服务器可能处于活动状态 我的意思是,我甚至不知道从哪里开始。一个简单的bash脚本示例可以准确地输出vhost的web服务器。检查端口80或443,哪个进程正在使用它们,如何: sudo netstat -ntlp | grep '0.0.0.0

我们有很多服务器和vhost,其中一些使用nignx,一些使用httpd或apache作为其域。我想写一个ansible脚本,将vhost用于其站点的web服务器上的信息提取出来,问题是很多服务器都安装了所有3台web服务器,但只有一台用于运行站点,其他服务器可能处于活动状态


我的意思是,我甚至不知道从哪里开始。一个简单的bash脚本示例可以准确地输出vhost的web服务器。

检查端口80或443,哪个进程正在使用它们,如何:

sudo netstat -ntlp | grep '0.0.0.0:80' | awk '{print $7}'
对于端口443:

sudo netstat -ntlp | grep '0.0.0.0:443' | awk '{print $7}'
输出将是以下行之一:

xx/httpd # for apache
xx/nginx # for nginx
您可以编写一个ansible任务来运行这个cmd

Q:如果服务器安装了nginx和apache,我如何找出哪个用于网站

答:给定一个网站,我们知道IP地址和端口。那么问题是:在www_ip主机和www_端口上运行的是什么守护进程

让我们使用lsof并打印列表中的第一项。下面的播放是nginx在8080端口监听的示例

- hosts: www_ip
  vars:
    www_port: 8080
  tasks:
    - shell: "lsof -i :{{ www_port }}|
              grep LISTEN|
              cut -d ' ' -f 1"
      register: result
    - debug:
        msg: "{{ result.stdout_lines|first }}"
给予

注释

此解决方案适用于Linux。 许多其他的想法和评论可以在
我确实喜欢这种想法!是的,应该有用。但是我必须检查这两个端口吗?这取决于你是否使用https,但是你可以使用这两个命令,如果没有监听端口443,它将不会打印任何内容。sudo netstat-ntlp帮助我你可以使用awk进行过滤,也许你应该在端口后添加一个单词边界分隔符。另外,您可能需要列出IPv6:sudo netstat-ntlp | awk'$4~/0.0.0 |:::80 | 443\>/{print$7}`````-hosts:vm2 vars:www|u port:80 been:yes tasks:-shell:lsof-i:{{www|u port}}grep LISTEN d{d'-f1 register:result-debug:msg={result.stdout}u-lines}第一个对我有效,我不知道你为什么使用8080端口我使用8080端口只是为了说明这种可能性。您是对的http默认端口是80。
ok: [www_ip] => {
    "msg": "nginx"
}