nginx怎么配置二级域名

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

  • wordpress搭建的博客服务, 运行于8000端口, 访问方式 http://fangyuanxiaozhan.com:8000

  • gogs搭建的git服务, 运行于10080端口, 访问方式 http://fangyuanxiaozhan.com:10080

  • nextcloud搭建的网盘服务, 运行于8080端口, 访问方式 http://fangyuanxiaozhan.com:10080

  • 我的需求:

  • 如何配置Nginx实现二级域名访问

    1.访问博客服务时, 直接输入 http://fangyuanxiaozhan.com

  • 访问git服务时, 直接输入 http://git.fangyuanxiaozhan.com

  • 访问网盘服务时, 直接输入 http://cloud.fangyuanxiaozhan.com

  • 实现的方法

    1、到托管域名的网站, 添加dns解析, 我的域名 fangyuanxiaozhan.com 托管在阿里云, 我的做法是登录 https://dns.console.aliyun.com/#/dns/domainlist , 添加二级记录

    2、我使用的是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)

    效果展示



    Nginx是一款开源的高性能Web服务器,也是现代化Web服务器架构的代表之一。配置Nginx实现二级域名访问不仅有助于提高网站可用性,还能提升用户体验和搜索引擎优化。接下来,我们将详细介绍如何配置Nginx实现二级域名访问。
    一、添加DNS解析
    在完成域名购买后,需要在DNS解析中添加二级域名的解析。要实现二级域名访问,首先需要DNS解析指向相应IP地址,将二级域名解析到服务器相应的IP地址上。
    二、配置虚拟主机
    在Nginx中,Virtual Host(虚拟主机)将一个Web服务器分割成多个不同的站点,每个站点使用不同的域名(二级域名或其他域名)。配置虚拟主机需要修改nginx.conf文件,并在server指定二级域名,设置root目录和location等信息,实现二级域名的访问。
    三、配置证书
    为保证数据传输的安全性,使用HTTPS进行访问是必不可少的。HTTPS使用TLS/SSL协议对数据进行加密,确保数据传输过程中不被窃听和篡改。配置证书需要申请SSL证书并在Nginx中进行配置。
    四、配置反向代理
    如果需要将二级域名访问从后端的Tomcat或其他服务器获取数据,需要配置反向代理。反向代理服务器接受客户端的请求,然后将请求转发给Tomcat服务器,最后将Tomcat服务器返回的内容发送给客户端,实现二级域名的访问。
    五、重启Nginx
    修改完nginx.conf配置文件后,需要重启Nginx,使配置生效。只有重启后,Nginx才会重新加载配置文件并使用新的设置重新启动Web服务器。
    六、测试二级域名访问
    完成以上配置后,可以通过浏览器访问设定的二级域名,如:http://blog.mydomain.com或https://blog.mydomain.com,并查看访问情况,是否实现了二级域名的访问。如果网站访问出现异常,需要逐步排查问题。
    七、总结
    通过以上七个步骤,Nginx二级域名的配置已经实现。此外,关于Nginx的优化、缓存等方面,还可以参考相关教程,优化网站性能。Nginx的高性能、高并发和负载均衡等特性,提高了Web服务器的稳定性和安全性,使得二级域名的访问更加畅通和高效。