一、使用docker安装Nginx

网上教程很多,主要命令:

1、安装Nginx

docker pull nginx

2 、启动容器

# 生成外挂文件夹
mkdir -p nginx-all/{www,logs,conf}

#参数-d 后台运行,参数-p端口映射,参数--name容器别名,参数-v挂载路径或文件
#可以加多个参数
docker run -d -p 81:80 -p 9003:9003 --name nginx-all  \
-v /mnt/vdc1/files/webserver/nginx-all/www:/usr/share/nginx/html  \
-v /mnt/vdc1/files/webserver/nginx-all/conf/nginx.conf:/etc/nginx/conf/nginx.conf  \
-v /mnt/vdc1/files/webserver/nginx-all/logs:/var/log/nginx nginx

nginx.conf文件默认

user  nginx;
worker_processes  auto;

error_log  /var/log/nginx/error.log notice;
pid        /var/run/nginx.pid;


events {
    worker_connections  1024;
}


http {
    include       /etc/nginx/mime.types;
    default_type  application/octet-stream;
    log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
                      '$status $body_bytes_sent "$http_referer" '
                      '"$http_user_agent" "$http_x_forwarded_for"';
    access_log  /var/log/nginx/access.log  main;
    sendfile        on;
    #tcp_nopush     on;
    keepalive_timeout  65;
    #gzip  on;
    include /etc/nginx/conf.d/*.conf;
}

二、命令查看端口

1、查看Liunx端口占用

菜鸟教程->Linux 查看端口占用情况
在这里插入图片描述
在这里插入图片描述

2、命令nmap端口扫描

3、docker容器的本机ip地址

ifconfig

# 可以看到docker0的信息,docker本机的ip地址一般为:172.17.0.1

三、docker中安装mysql并通过Nginx代理

1、docker安装mysql5.7

  • 查找网上教程就可以了
  • 比如映射端口 3306:3306,但是3306并不对外开放,可以在主机内使用172.17.0.1:3306去本地连接docker中的mysql
  • 别忘了创建远程访问的mysql账号、密码

2、使用Nginx代理docker中的mysql

#nginx.conf配置


user  nginx;
worker_processes  auto;

error_log  /var/log/nginx/error.log notice;
pid        /var/run/nginx.pid;


events {
    worker_connections  1024;
}

#这里监听本机docker中的172.17.0.1:3306,并通过主机的9003端口开放出去
#之后,只要外部连接主机ip:9003,并使用mysql的用户名、密码,就可以访问内部的
#mysql了
stream {        
        upstream mysql {
            server 172.17.0.1:3306;
        }
        server {
            listen 9003;
            proxy_connect_timeout 10s;
            proxy_timeout 30s;
            proxy_pass mysql;
        }
}


http {
    include       /etc/nginx/mime.types;
    default_type  application/octet-stream;

    log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
                      '$status $body_bytes_sent "$http_referer" '
                      '"$http_user_agent" "$http_x_forwarded_for"';

    access_log  /var/log/nginx/access.log  main;

    sendfile        on;
    #tcp_nopush     on;

    keepalive_timeout  65;

    #gzip  on;

    include /etc/nginx/conf.d/*.conf;
}

四、总结以及注意

  • Nginx需要一定版本以上才能使用“stream”这个配置,最好选用最新版本
  • Nginx的使用还有很多需要学习,我这里只是记录工作中尝试的一些。主要还是查看文档
  • docker容器就是一台台虚拟机,它们通过桥接的形式与宿主机相连。每个容器都映射到一个或多个宿主机的端口
Logo

权威|前沿|技术|干货|国内首个API全生命周期开发者社区

更多推荐