域名只能指向80端口,主域名和二级域名指向不同服务器

如题, 很多个人开发者想拥有自己的服务器, 但是苦于预算有限, 还有一些人想开发一些小程序等等, 多少会写几个服务 特别是像微信小程序开发, 要求必须是https的域名才可以, 但是买多个服务器并不划算, 只买一台机器端口80只有一个, 所以又不想买机器又想发布多个服务, 只能通过其他办法来解决, 下面我就介绍一下如何用一台服务器解决这些问题

工具

服务器:

主流的有阿里云、腾讯云, 我建议阿里云, 腾讯我也用过但是经常会中毒, 配置根据个人喜好, 现在服务器基本都是centos了, 下面我也是以centos来介绍, 如果家里面是电信宽带的话好像也可以申请固定公网ip需要多收费, 这样就不必再买云服务器了

域名:

域名是有必要的, 如果你想有自己的网站发布在服务器上, 最好有一个域名, 没有的话直接用公网ip也可以, 但是微信小程序必须要有域名才行, 所以最好有一个自己的域名, 到阿里云上面买一个普通的很便宜, 做好后要先备案, 备案周期久的话要审核一个月, 看运气, 建议先备案

搭建服务器环境

有了服务器和域名, 就可以做很多事情了, 首先我们要解决开头提到的问题, 话不多说, 解决这个问题我推荐使用nginx, 像一些云上面的负载均衡, 就是使用的nginx, 只不过云上面做了优化, 那么先在服务器上面安装nginx(安装教程)

域名解析

前面购买的域名比如gogogo.com, 我们一般不会直接使用顶级域名, 而是使用解析后的二级域名, 以小程序开发为例, 首先小程序有接口服务, 我们先创建一个api.gogogo.com解析到我们服务器的公网ip地址, 再比如图片域名img.gogogo.com同样解析到我们服务器的公网ip地址, 如果有多个服务 就解析多个域名到我们服务器的公网ip, 每个二级域名代表一个服务, 可以发现这些二级域名指向的都是一台服务器的80端口, 后面介绍怎么解决

域名只能指向80端口,主域名和二级域名指向不同服务器

配置nginx

假设我们api服务发布在服务器的3000端口, 图片服务发布在服务器的3001端口

解决共用80端口问题需要对nginx配置即可, 找到nginx的配置文件

vim /usr/local/nginx/conf/nginx.conf

找到server模块

新增server

    #小程序api服务
    server {
        listen       80;
        server_name  api.gogogo.com;  #根据域名拦截http服务
      
        proxy_set_header X-Forwarded-Host $host;
        proxy_set_header X-Forwarded-Server $host;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    
        location / {
          # 监听80端口 转发到3000
          proxy_pass http://127.0.0.1:3000;
    	    proxy_connect_timeout 600;
    	    proxy_read_timeout 600;
        }
    }
    
    #小程序图片服务
    server {
        listen       80;
        server_name  img.gogogo.com;  #根据域名拦截http服务
		    # 不设置此项可能会导致push大文件失败
				client_max_body_size 100m;
        proxy_set_header X-Forwarded-Host $host;
        proxy_set_header X-Forwarded-Server $host;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    
        location / {
          # 监听80端口 转发到3001
          proxy_pass http://127.0.0.1:3001;
    	    proxy_connect_timeout 600;
    	    proxy_read_timeout 600;
        }
    }

保存后nginx -s reload, 浏览器输入api.gogogo.com(自己域名和参数), 此时问题已经解决

不同域名只需要修改server_name后面的域名就可以了

赞(0)
未经允许不得转载:主机测评网 » 域名只能指向80端口,主域名和二级域名指向不同服务器
分享到: 更多 (0)