nginx配置二级域名

为了不让域名fangyuanxiaozhan.com闲置, 作者又买了个国内的虚拟主机(VPS)的ip为111.230.254.173, 用wordpress开了个博客网站, 由于vps的空间很大, 我就开了个私有网盘服务, 由于日常开发需要用到git, 但又不想公开代码, 我又开了个私有git服务

我的vps挂了三个服务, 分别是:

我的需求:

实现的方法

  1. 到托管域名的网站, 添加DNS解析, 我的域名fangyuanxiaozhan.com托管在阿里云, 我的做法是登录https://dns.console.aliyun.com/#/dns/domainList, 添加二级记录
  1. 我使用的是centos7, nginx配置文件的默认位置为/etc/nginx/nginx.conf, 有意思的是,/etc/nginx/nginx.conf内引入了 配置文件夹/etc/nginx/conf.d, 也就是我们可以把/etc/nginx/nginx.conf中的一些默认配置注释掉, 直接在文件夹/etc/nginx/conf.d中配置多个独立的配置文件.
  • /etc/nginx/nginx.conf的配置
# For more information on configuration, see:
#   * Official English Documentation: http://nginx.org/en/docs/
#   * Official Russian Documentation: http://nginx.org/ru/docs/

user nginx;
worker_processes auto;
error_log /var/log/nginx/error.log;
pid /run/nginx.pid;

# Load dynamic modules. See /usr/share/nginx/README.dynamic.
include /usr/share/nginx/modules/*.conf;

events {
    worker_connections 1024;
}

http {
    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;
    tcp_nodelay         on;
    keepalive_timeout   65;
    types_hash_max_size 2048;

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

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

}

注意上述配置文件的最后一行, include /etc/nginx/conf.d/*.conf;保证了/etc/nginx/conf.d/下,所有以.conf结尾的配置文件, 都会被主配置文件nginx.conf引入并生效

  • /etc/nginx/conf.d/下面需要新建三个文件
  • blog.conf (实现8000端口映射到80端口, 不使用二级域名)
server {  
    listen 80;
    server_name fangyuanxiaozhan.com;

    location / {
        proxy_set_header   X-Real-IP $remote_addr;
        proxy_set_header   Host      $http_host;
        proxy_pass         http://0.0.0.0:8000;
    }
}

blog.conf实现了fangyuanxiaozhan.com:8000映射到 fangyuanxiaozhan.com

  • git.conf (实现10080端口映射到80端口, 使用二级域名git)
server {  
    listen 80;
    server_name git.fangyuanxiaozhan.com;

    location / {
        proxy_set_header   X-Real-IP $remote_addr;
        proxy_set_header   Host      $http_host;
        proxy_pass         http://0.0.0.0:10080;
    }
}

git.conf实现了fangyuanxiaozhan.com:10080映射到 git.fangyuanxiaozhan.com

  • nc.conf (实现10080端口映射到80端口, 使用二级域名cloud)
server {  
    listen 80;
    server_name cloud.fangyuanxiaozhan.com;

    location / {
        proxy_set_header   X-Real-IP $remote_addr;
        proxy_set_header   Host      $http_host;
        proxy_pass         http://0.0.0.0:8080;
    }
}

git.conf实现了fangyuanxiaozhan.com:8080映射到 cloud.fangyuanxiaozhan.com


重启nginx使配置生效

  • 关闭nginx
sudo $(which nginx) -s stop
  • 开启nginx
sudo $(which nginx)

效果展示

自从使用了docker, 发现很多服务的搭建都是很简单的, 但随着服务的增多, 二级域名的作用性就显现出来了, nginx可以很方便的解决二级域名的配置问题,掌握了nginx配置二级域名的技术, 我们就可以优雅的开启各种服务了~

原文地址:https://www.cnblogs.com/xiadongqing/p/13033289.html