Linux学习之nginx虚拟域名主机,lsof和netstat命令查看端口是否被监听

需要先参考我的博客《Linux学习之Ubuntu 20.04在https://openresty.org下载源码安装Openresty 1.19.3.1,使用systemd管理OpenResty服务》安装好Openresty。

虚拟域名可以使用让不同的域名访问到同一台主机。
cd /usr/local/openresty切换当前访问目录到/usr/local/openresty。

在/usr/local/openresty/nginx/conf/nginx.conf文件的http配置块末尾添加上以下的内容:

bash 复制代码
server {
        # 监听8000
        listen       8000;
        # 域名设为 www.sea.com
        server_name  www.sea.com;

        location / {
            # 访问根目录是html/sea
            root   html/sea;
            index  index.html index.htm;
        }
    }
server {
        # 监听8800
        listen       8800;
        # 域名设为 www.sea.com
        server_name  www.side.com;

        location / {
            # 访问根目录是html/side
            root   html/side;
            index  index.html index.htm;
        }
    }

/usr/local/openresty/nginx/conf/nginx.conf文件整体内容如下:

bash 复制代码
worker_processes  1;
events {
    worker_connections  1024;
}
http {
    include       mime.types;
    default_type  application/octet-stream;
    sendfile        on;
    keepalive_timeout  65;
    server {
        listen       80;
        server_name  localhost;
        location / {
            root   html;
            index  index.html index.htm;
        }
        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   html;
        }
    }
    server {
        # 监听8000
        listen       8000;
        # 域名设为 www.sea.com
        server_name  www.sea.com;

        location / {
            # 访问根目录是html/sea
            root   html/sea;
            index  index.html index.htm;
        }
    }
    server {
        # 监听8800
        listen       8800;
        # 域名设为 www.sea.com
        server_name  www.side.com;

        location / {
            # 访问根目录是html/side
            root   html/side;
            index  index.html index.htm;
        }
    }
}

我使用的是vim编辑器,要是不知道vim编辑怎么使用,可以看一下我的博客。

/usr/local/openresty/nginx/sbin/nginx -t可以检查一下格式和测试都是正常的。

/usr/local/openresty/nginx/sbin/nginx进行启动。

lsof -i:8000可以看到8000端口已经被监听,lsof -i:8800可以看到8800端口也已经被监听,lsof -i:7800没有被监听,因为没有任何输出,注意:7800端口只是测试一下,说明什么叫没有被监听。

/usr/local/openresty/nginx/sbin/nginx再次进行启动,发现报错如下:

bash 复制代码
nginx: [emerg] bind() to 0.0.0.0:80 failed (98: Address already in use)
nginx: [emerg] bind() to 0.0.0.0:8000 failed (98: Address already in use)
nginx: [emerg] bind() to 0.0.0.0:8800 failed (98: Address already in use)

/usr/local/openresty/nginx/sbin/nginx -s stop可以停止nginx,/usr/local/openresty/nginx/sbin/nginx再次启动。

netstat -ntpl | grep nginx查看一下nginx的监听端口。

接下来把下边的内容也添加到/usr/local/openresty/nginx/conf/nginx.confhttp配置块里:

bash 复制代码
   server {
        # 监听9800
        listen       9800;
        # 域名设为 www.work.com
        server_name  www.work.com;

        location / {
            # 访问根目录是html/work
            root   html/work;
            index  index.html index.htm;
        }
    }

/usr/local/openresty/nginx/conf/nginx.conf文件整体内容如下:

bash 复制代码
worker_processes  1;
events {
    worker_connections  1024;
}
http {
    include       mime.types;
    default_type  application/octet-stream;
    sendfile        on;
    keepalive_timeout  65;
    server {
        listen       80;
        server_name  localhost;
        location / {
            root   html;
            index  index.html index.htm;
        }
        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   html;
        }
    }


    server {
        # 监听8000
        listen       8000;
        # 域名设为 www.sea.com
        server_name  www.sea.com;

        location / {
            # 访问根目录是html/sea
            root   html/sea;
            index  index.html index.htm;
        }
    }


    server {
        # 监听8800
        listen       8800;
        # 域名设为 www.sea.com
        server_name  www.side.com;

        location / {
            # 访问根目录是html/side
            root   html/side;
            index  index.html index.htm;
        }
    }
    
   server {
        # 监听9800
        listen       9800;
        # 域名设为 www.work.com
        server_name  www.work.com;

        location / {
            # 访问根目录是html/work
            root   html/work;
            index  index.html index.htm;
        }
    }
}

/usr/local/openresty/nginx/sbin/nginx -s reload可以在不断开已有连接的基础上重新加载/usr/local/openresty/nginx/conf/nginx.conf。


echo "127.0.0.1 www.sea.com www.side.com www.work.com" >> /etc/hosts将127.0.0.1 www.sea.com www.side.com www.work.com写入/etc/hosts里边。

mkdir /usr/local/openresty/nginx/html/sea /usr/local/openresty/nginx/html/side /usr/local/openresty/nginx/html/work在/usr/local/openresty/nginx/html创建三个目录sea、side和work。

执行下边命令:

bash 复制代码
echo "hello sea" > /usr/local/openresty/nginx/html/sea/index.html # 在/usr/local/openresty/nginx/html/sea/index.html写入 hello sea
echo "hello side" > /usr/local/openresty/nginx/html/side/index.html # 在/usr/local/openresty/nginx/html/side/index.html写入 hello side
echo "hello work" > /usr/local/openresty/nginx/html/work/index.html # 在/usr/local/openresty/nginx/html/work/index.html 写入 hello work

curl http://www.sea.com:8000可以访问虚拟域名www.sea.com的8000端口。
curl http://www.side.com:8800可以访问虚拟域名www.side.com的8800端口。
curl http://www.work.com:9800可以访问虚拟域名www.work.com的9800端口。

此文章为8月Day 26学习笔记,内容来源于极客时间《Linux 实战技能 100 讲》。

相关推荐
每天题库22 分钟前
危险货物道路运输从业资格证题库刷题重点与错题梳理
学习·安全·考试·题库·考证
m4Rk_1 小时前
【论文阅读】Agent 记忆机制(86):Skill-Pro——用 Non-Parametric PPO 将交互经验演化为可复用技能
论文阅读·人工智能·学习·开源·github
AOI小白新手上路1 小时前
从 Keil 调试视角看 51 指针,到 Cortex-M 内存映射访问寄存器 · 学习笔记
笔记·学习
shdkfbbv1 小时前
【无标题】
linux·运维·服务器
Joe_Wang51 小时前
【从0到1学习JVM · 15】对象在堆里来回倒腾,究竟怎样才会进老年代?
java·jvm·学习·垃圾回收
周洲08302 小时前
STM32片内Flash读写深度详解|掉电参数保存、底层原理
linux·前端·stm32
shimly1234562 小时前
比 find + grep 更好用的 nm + addr2line
linux
迷途之人不知返2 小时前
【进程控制】-3-进程等待
linux
_upupup3 小时前
包管理器和vim
linux·服务器
一颗小树x3 小时前
NVIDIA 驱动故障排查实录:内核升级导致 nvidia-smi 失效
linux·服务器·nvidia驱动·启动失败·内核升级