nginx配置二級域名

木子昭發表於2018-08-05

為了不讓域名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 (實現8080埠對映到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配置二級域名的技術, 我們就可以優雅的開啟各種服務了~


相關文章