天天看點

nginx的80端口服務配置多域名轉發

前言

nginx的80端口服務可以配置多域名轉發,滿足我們單個/單台nginx實作配置多個域名轉發功能,不需要每個/每台服務部署nginx的80服務,注:nginx的443端口服務同理

使用

  • 1.關閉防火牆(firewalld,iptables)
  • 2.關閉selinux
  • 3.安裝docker
  • 4.安裝docker-compose工具

如上不再贅述

部署一個web服務,頁面展示nature
  • 配置web服務首頁
mkdir -p /opt/nginx/nature/html
cat > /opt/nginx/nature/html/index.html <<-EOF
nature
EOF
           
  • docker部署web服務
mkdir -p /data/nginx/nature
cat > /data/nginx/nature/docker-compose.yml <<-EOF
version: "3.5"
services:
  mysql:
    image: nginx
    container_name: nginx_nature
    hostname: nginx_nature
    privileged: true
    ports:
      - 8080:80
    environment:
      - SET_CONTAINER_TIMEZONE=true
      - CONTAINER_TIMEZONE=Asia/Shanghai
    volumes:
      - /etc/localtime:/etc/localtime:ro
      - /opt/nginx/nature/html:/usr/share/nginx/html:Z
    restart: always
    tty: true
EOF
cd /data/nginx/nature && docker-compose up -d
           
  • 檢視首頁
nature]# docker ps | grep nature
bcb0462de867        nginx                     "/docker-entrypoint.…"   12 minutes ago      Up 12 minutes       0.0.0.0:8080->80/tcp                             nginx_nature
nature]# curl localhost:8080
nature
           

注: 通過伺服器通路,也可以通過浏覽器通路,請自行選擇通路方式

部署另一個web服務,頁面展示confirm
  • 配置web服務首頁
mkdir -p /opt/nginx/confirm/html
cat > /opt/nginx/confirm/html/index.html <<-EOF
confirm
EOF
           
  • docker部署web服務
mkdir -p /data/nginx/confirm
cat > /data/nginx/confirm/docker-compose.yml <<-EOF
version: "3.5"
services:
  mysql:
    image: nginx
    container_name: nginx_confirm
    hostname: nginx_confirm
    privileged: true
    ports:
      - 9080:80
    environment:
      - SET_CONTAINER_TIMEZONE=true
      - CONTAINER_TIMEZONE=Asia/Shanghai
    volumes:
      - /etc/localtime:/etc/localtime:ro
      - /opt/nginx/confirm/html:/usr/share/nginx/html:Z
    restart: always
    tty: true
EOF
cd /data/nginx/confirm && docker-compose up -d
           
  • 檢視首頁
nature]# docker ps | grep confirm
2b47b9bedd8d        nginx                     "/docker-entrypoint.…"   3 days ago          Up 3 days           0.0.0.0:9080->80/tcp                             nginx_confirm
nature]# curl localhost:9080
confirm
           

注: 通過伺服器通路,也可以通過浏覽器通路,請自行選擇通路方式

配置nginx的80端口服務轉發多域名
  • 配置域名轉發
mkdir -p /data/nginx/master
cat > /data/nginx/master/nginx.conf <<-EOF
user  nginx;
worker_processes  auto;

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


events {
    worker_connections  65535;
}


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;

    server {
      listen 80;
      server_name www.nature.com;
      location / {
        proxy_pass http://172.21.0.14:8080;
      }
    }

    server {
      listen 80;
      server_name www.confirm.com;
      location / { 
        proxy_pass http://172.21.0.14:9080;
      }
    }
}
EOF
           
  • docker部署80端口的nginx容器服務
cat > /data/nginx/master/docker-compose.yml <<-EOF
version: "3.5"
services:
  mysql:
    image: nginx
    container_name: nginx_master
    hostname: nginx_master
    ports:
      - 80:80  
      - 443:443
    environment:
      - SET_CONTAINER_TIMEZONE=true
      - CONTAINER_TIMEZONE=Asia/Shanghai
    volumes:
      - /etc/localtime:/etc/localtime:ro
      - /data/nginx/master/nginx.conf:/etc/nginx/nginx.conf
    restart: always
    tty: true
EOF
cd /data/nginx/master && docker-compose up -d    
           
  • 檢視80端口的容器服務
master]# docker ps | grep nginx_master
5b01358a12a8        nginx                     "/docker-entrypoint.…"   2 days ago          Up 2 days           0.0.0.0:80->80/tcp, 0.0.0.0:443->443/tcp         nginx_master
           
  • 配置本機域名解析
cat >> /etc/hosts <<-EOF
172.21.0.14    www.nature.com
172.21.0.14    www.confirm.com
EOF
           
  • 通路兩個web服務
master]# curl www.nature.com
nature
master]# curl www.confirm.com
confirm
           

注: 通過伺服器通路,也可以通過浏覽器通路(此方式需要搭建内網dns,并把相應的ip及域名添加到域名解析中),請自行選擇通路方式

結語

… …

繼續閱讀