前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >nginx设置二级域名

nginx设置二级域名

原创
作者头像
用户6197772
发布于 2022-09-15 12:47:41
发布于 2022-09-15 12:47:41
8.6K00
代码可运行
举报
文章被收录于专栏:nginx入门nginx入门
运行总次数:0
代码可运行

nginx配置域名

nginx配置域名并以普通用户监听80端口

想要通过域名来访问nginx代理的服务,需要在nginx的配置文件nginx.conf 文件中进行如下配置

在server配置块中通过server_name来指定

并且在网络所在的域名管理系统中,配置ip和域名的映射关系。 如果没有域名管理系统,需要在所有要访问该系统的电脑的hosts文件中进行配置。

windows系统中,配置文件的位置是:C:\Windows\System32\drivers\etc\hosts

在linux系统中,配置文件的位置是 /etc/hosts

在hosts文件中,配置的内容格式如下:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
ip地址    域名

之后,就可以通过域名和ip的形式来访问nginx代理的服务了。

http://192.168.23.130:8080/nginxdemo/api/v1/user/queryUserInfoById

http://www.abc.com:8080/nginxdemo/api/v1/user/queryUserInfoById

这里我们需要注意,我们在通过域名访问的时候,还需要指定端口,否则会报错。

如果想要不指定端口,那么我们可以通过将端口设置为默认端口80 来实现。

通过如下的几种方案设置监听80端口。 修改listener 的取值。之后可以通过如下地址来访问:

http://www.abc.com/nginxdemo/api/v1/user/queryUserInfoById

这是因为http默认是通过80端口来访问的。

疑惑:

  1. 当为nginx的端口指定为80 的时候,启动的时候,为什么会提示没有权限 nginx: emerg bind() to 0.0.0.0:80 failed (13: Permission denied)

这里是通过非root用户启动报错的,如果是root用户,则不会有问题。

原因分析: 默认情况下linux的1024以下端口是只有root用户才有权限占用

解决方案:

方案一:通过sudo命令启动

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
$> sudo nginx

启动之后,nginx是通过root用户启动的。 如下 图:

这里可以看到master进程是通过root用户启动,而worker进程是通过nobody用户进行启动的,我们可以在nginx.conf 中指定worker进程启动的用户

通过nginx.conf 的user指令来设置。

补充:通过常规用户启动,nginx是被当前登录用户启动的

这里当使用sudo 命令启动的时候,是以root用户来运行的,所依赖的变量也是root用户所具有的,如果nginx的路径没有在root的环境变量中设置,那么会提示nginx找不到。

方案二:setcap 授权

Kernel从2.2版本开始,提供了Capabilities功能,它把特权划分成不同单元,可以只授权程序所需的权限,而非所有特权,

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
$> setcap cap_net_bind_service=+eip /home/ngx/nginx/sbin/nginx

参考:https://blog.csdn.net/weixin_33488806/article/details/116864796

之后通过nginx 启动nginx即可。

nginx配置二级域名

编辑nginx.conf 。 在http 配置块中,添加如下内容:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
    server {
        listen 80;
        server_name www.demo.abc.com;
        
        location / {
            proxy_set_header x-real-ip $remote_addr;
            proxy_set_header host $http_host;
            proxy_pass http://0.0.0.0:8081;
        }
    }
    server {
        listen 80;
        server_name www.demo01.abc.com;
        
        location / {
            proxy_set_header x-real-ip $remote_addr;
            proxy_set_header host $http_host;
            proxy_pass http://0.0.0.0:8082;
        }
    }

    server {
        listen 80;
        server_name www.demo02.abc.com;

        location / {
             proxy_set_header x-real-ip $remote_addr;
             proxy_set_header host $http_host;
             proxy_pass http://0.0.0.0:8083;
        }
    }

这里同一个机器的端口80,对应三个不同的二级域名,分别是: www.demo.abc.com www.demo01.abc.com www.demo02.abc.com

同样,这里的三个二级域名需要在DNS域名服务中进行配置,最少也需要在hosts文件中进行配置。

配置之后,通过不同的域名,可以访问到不同的应用程序。

优化

这里,我们将不同的二级域名保存在了同一个配置文件中,我们可以将其拆分成独立的文件进行单独管理。

将上面的三个server 单独抽离到三个不同的文件,并且放置在nginx.conf 文件所在目录的nginx.d 目录下,

配置如下:

demo01.conf

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
server {
        listen 80;
        server_name www.demo.abc.com;
        
        location / {
            proxy_set_header x-real-ip $remote_addr;
            proxy_set_header host $http_host;
            proxy_pass http://0.0.0.0:8081;
        }
    }

demo02.conf

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
server {
        listen 80;
        server_name www.demo01.abc.com;
        
        location / {
            proxy_set_header x-real-ip $remote_addr;
            proxy_set_header host $http_host;
            proxy_pass http://0.0.0.0:8082;
        }
    }

demo03.conf

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
server {
        listen 80;
        server_name www.demo02.abc.com;

        location / {
             proxy_set_header x-real-ip $remote_addr;
             proxy_set_header host $http_host;
             proxy_pass http://0.0.0.0:8083;
        }
}

并且在nginx.conf中,通过include指令将三个文件引入都http代码配置块中。

之后可以通过如下地址访问到对应的服务器

http://www.demo02.abc.com/nginxdemo/api/v1/user/queryUserInfoById

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
{"id":null,"userName":"lipf","age":12,"ip":"192.168.23.130","hostName":"node03","serverPort":"8083","currTime":"2022-09-13T04:13:09.516180"}

http://www.demo01.abc.com/nginxdemo/api/v1/user/queryUserInfoById

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
{"id":null,"userName":"lipf","age":12,"ip":"192.168.23.130","hostName":"node03","serverPort":"8082","currTime":"2022-09-13T04:12:49.555868"}

http://www.demo.abc.com/nginxdemo/api/v1/user/queryUserInfoById

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
{"id":null,"userName":"lipf","age":12,"ip":"192.168.23.130","hostName":"node03","serverPort":"8081","currTime":"2022-09-13T04:12:15.680748"}

代码

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
# springboot项目 com.demo.demo.UserController

package com.demo.demo;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.core.env.Environment;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;

import java.net.InetAddress;
import java.net.UnknownHostException;
import java.time.LocalDateTime;

@RestController
public class UserController {

    @Autowired
    private Environment environment;


    /**
     * 根据用户序号查询用户信息
     *
     * http://127.0.0.1:8081/nginxdemo/api/v1/user/queryUserInfoById
     * http://192.168.0.130:8081/nginxdemo/api/v1/user/queryUserInfoById
     * @return
     */
    @GetMapping("api/v1/user/queryUserInfoById")
    AuUser queryUserInfoById(Long id){
        AuUser user = new AuUser();
        user.setId(id);
        user.setUserName("lipf");
        user.setAge(12);
        InetAddress localHost = null;
        try {
            localHost = InetAddress.getLocalHost();
        } catch (UnknownHostException e) {
            e.printStackTrace();
        }
        LocalDateTime now = LocalDateTime.now();
        user.setCurrTime(now.toString());
        if(localHost != null){
            user.setIp(localHost.getHostAddress());
            user.setHostName(localHost.getHostName());
            String serverPort = "";
            if(environment!= null){
                serverPort = environment.getProperty("local.server.port");
                user.setServerPort(serverPort);
            }
            System.out.println(now + " id = " + id + "--IP = " +localHost.getHostAddress() + "--" +localHost.getHostName() + "---serverPort--" + serverPort);
            System.out.println();
        }else{
            System.out.println(now + " id = " + id + "--获取主机信息失败");
        }
        return user;
    }
}
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
package com.demo.demo;

import java.io.Serializable;

public class AuUser implements Serializable {

    private  Long id;

    private String userName;

    private int age;

    private String ip;

    private String hostName;

    /**
     * 端口
     */
    private String serverPort;

    private String currTime;

    public String getCurrTime() {
        return currTime;
    }

    public void setCurrTime(String currTime) {
        this.currTime = currTime;
    }

    public String getIp() {
        return ip;
    }

    public void setIp(String ip) {
        this.ip = ip;
    }

    public String getHostName() {
        return hostName;
    }

    public void setHostName(String hostName) {
        this.hostName = hostName;
    }

    public Long getId() {
        return id;
    }

    public void setId(Long id) {
        this.id = id;
    }

    public String getUserName() {
        return userName;
    }

    public void setUserName(String userName) {
        this.userName = userName;
    }

    public int getAge() {
        return age;
    }

    public void setAge(int age) {
        this.age = age;
    }

    public String getServerPort() {
        return serverPort;
    }

    public void setServerPort(String serverPort) {
        this.serverPort = serverPort;
    }
}

注意:

这里配置二级域名进行文件抽取的时候,为了避免之前配置的影响,先将原先的nginx通过nginx -s stop 停止,之后,再通过nginx 启动。

变更记录

变更时间

变更内容

备注

20220912星期一

nginx域名的配置

需要进行DNS的相关配置,普通用户启动nginx监听80端口需要进行特殊配置

20220913星期二

nginx二级域名配置

可以将不同的二级域名配置抽离出不同的问题

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
暂无评论
推荐阅读
推开图形学大门、进入模拟的世界,超火的太极图形课程开课了
得益于计算机仿真技术的不断发展,我们能够在电脑中重建越来越逼真的现实世界,制作出《冰雪奇缘》这类优秀的动画特效电影。然而,逼真的场景以及丰富的细节离不开超高精度的物理模拟。 两年多前,MIT人工智能实验室博士生胡渊鸣创建了一个名为「太极」的开源计算机图像库,展示了多种场景的酷炫模拟效果,也让读者更深入地了解到什么是计算机图形学。 今年 3 月,胡渊鸣博士毕业并回国创立了太极图形(Taichi Graphics)公司,致力于开发开源基础设施太极编程语言,并专注于图形学、编译器、高性能计算以及人工智能相关技
机器之心
2023/03/29
5890
推开图形学大门、进入模拟的世界,超火的太极图形课程开课了
胡渊鸣的「太极图形」又融了5000万美元,接下来推出3D内容创作平台
杨净 发自 凹非寺 量子位 | 公众号 QbitAI 开工第一天,胡渊鸣大神这边传来新进展。 他创办的太极图形,官宣完成A轮融资—— 5000万美元,由源码资本、GGV纪源资本、BAI 资本联合领投,以及天使轮投资者红杉中国种子基金加码。 与此同时,太极图形还公布了自己下一阶段目标—— 除了继续开发优化太极编程语言外,还将推出直接面向3D数字内容创作者的工具。 成立不到1年,太极图形屡受资本青睐,完成两轮融资。 在业务板块上,也完成了从底层基础设施到上层应用的延伸。 现在的太极图形是家什么公司? 两大业
量子位
2022/03/04
6540
Xue Bin Peng获SIGGRAPH 2022最佳博士论文,太极胡渊鸣获提名
机器之心报道 机器之心编辑部 今年,SIGGRAPH 2022 首次设置了最佳论文奖,共有五篇。此外,备受瞩目的最佳博士论文也于近日揭晓。 近日,SIGGRAPH 公布了今年大会的一系列奖项。 ACM SIGGRAPH 是计算机图形学顶级国际学术会议,创立于 1974 年,已经发展成为由对计算机图形学和交互技术感兴趣的研究人员、艺术家、开发人员、电影制作人、科学家和商业人士组成的国际社区。 今年的 SIGGRAPH 将于 8 月 8 日至 11 日在温哥华举行,同时也可线上参会。 最引人注目的是,SIG
机器之心
2022/07/07
6960
Xue Bin Peng获SIGGRAPH 2022最佳博士论文,太极胡渊鸣获提名
姚班大神胡渊鸣回国创业!超一半员工为清华校友,团队人均竞赛金牌数≥2
他是“太极”(TaiChi)编程语言发明者,这种语言可以快速实现物理特效渲染,大大降低了计算机图形学的编程门槛。
量子位
2021/04/23
1K0
姚班大神胡渊鸣回国创业!超一半员工为清华校友,团队人均竞赛金牌数≥2
多材料耦合俄罗斯方块?胡渊鸣给「太极图形课」交作业了!
这是一份太极图形 CEO 胡渊鸣与 CTO 匡冶忙里偷闲交出的「太极图形课」小作业—基于 Taichi 的软体俄罗斯方块游戏 demo,以下简称他们二人为“原野”组合。
机器之心
2021/10/26
6170
多材料耦合俄罗斯方块?胡渊鸣给「太极图形课」交作业了!
多项核心技术进展发布!胡渊鸣创业后首现身,讲述「太极图形」的前世今生
最近一年,计算机图形学正在迎来产业新浪潮,各路计算机图形学大神纷纷创业成立新的公司。
AI科技评论
2021/09/16
8970
清华毕业生开发新特效编程语言,99行代码实现《冰雪奇缘》,网友:大神碉堡!创世的快乐「建议收藏」
或许你不知道,电影和动画中特效有时仅仅短短的一秒,却可能需要高性能计算机演算一周,花费惊人。
全栈程序员站长
2022/08/25
3.3K0
清华毕业生开发新特效编程语言,99行代码实现《冰雪奇缘》,网友:大神碉堡!创世的快乐「建议收藏」
支持异构图、集成GraphGym,超好用的图神经网络库PyG更新2.0版本
机器之心报道 编辑:陈萍、杜伟 当前最流行和广泛使用的 GNN 库 PyG(PyTorch Geometric)现在出 2.0 版本了,新版本提供了全面的异构图支持、GraphGam 以及很多其他特性,这一系列改进,为使用者带来了更好的用户体验。 PyTorch Geometric(PyG)是一个构建于 PyTorch 之上的库,用来为一系列与结构化数据相关的应用编写和训练图神经网络(GNN)。PyG 对机器学习研究者以及机器学习工具包的首次使用者都很友好。 就其特征和功能而言,PyG 具有易用和统一的
机器之心
2023/03/29
7780
支持异构图、集成GraphGym,超好用的图神经网络库PyG更新2.0版本
计算机图形也能自动可微:MIT学神的微分太极框架开源,论文已被ICLR 2020接收
目前,一作胡渊鸣已在 GitHub 上开源了基于这一框架完成的 10个 物理模拟器,项目登上了 GitHub 热榜。而微分太极论文也已被 ICLR2020 接收。
机器之心
2020/02/12
8470
计算机图形也能自动可微:MIT学神的微分太极框架开源,论文已被ICLR 2020接收
太極:MIT华人学神开源的计算机图形库
太極(Taichi)是一个开源的计算机图形库,它旨在提供易于使用的计算机图形学基础架构,并提供了 40 多份计算机图形学重要研究的实现。出于效率的考虑,太極本身是由 C++ 构建的,但用 Python 包装了接口。
机器之心
2019/05/17
9630
MIT博士毕业,「太极」作者胡渊鸣回国创业,专注图形编程
机器之心报道 作者:杜伟 从学术界到产业界,MIT 博士、太极作者胡渊鸣完成了无缝衔接。今年 3 月完成博士学业后,胡渊鸣选择回国创业,成立了太极图形 (Taichi Graphics)公司,自己担任联合创始人兼 CEO。 2019 年 5 月,MIT 人工智能实验室(CSAIL)博士二年级学生胡渊鸣构建了一个名为「太极」的开源计算机图像库,展示了多种场景的酷炫模拟效果,也让读者更深入地了解到什么是计算机图形学。目前,该库在 GitHub 上已有 13.2k 的 star 量。  之后,胡渊鸣又联合其他研究
机器之心
2023/03/29
1.6K0
MIT博士毕业,「太极」作者胡渊鸣回国创业,专注图形编程
AI公司创始人冒充中科大少年班校友:学历是假的,合伙人也是假的
机器之心报道 机器之心编辑部 一家 AI 初创公司的 CEO,竟以假学历混迹多年? 昨天,公众号「中国科大新创校友基金会」(USTCIF)发布声明:经多方查实,莫比嗨客 CEO 刘端阳冒充少年班校友多年,并涉嫌假冒清华大学硕士、斯坦福大学博士(或博士生),通过莫比嗨客公司欺诈深圳、苏州、青岛、山西吕梁等多个城市与高新科技园区。 在此之前,刘端阳自称「12 岁考入中国科学技术大学少年班」。以往多篇提及刘端阳的网络报道中,均出现了「清华大学硕士、斯坦福大学博士(或博士候选人)」、「12 岁就考到中国科学技术大
机器之心
2023/03/29
3710
AI公司创始人冒充中科大少年班校友:学历是假的,合伙人也是假的
CMU出品,计算机图形学秋季课程已上线,B站同步字幕视频
计算机图形学(Computer Graphics)是研究计算机在硬件和软件帮助下创建计算机图形的学科,近年来受到了学界和业界的广泛关注。该领域的研究者也越来越多,如计算机图形学大神 & 太极(Taichi)作者胡渊鸣、「为可微计算机图形学奠定基础」荣获 SIGGRAPH 最佳博士论文奖的太极二作李子懋等等。
3D视觉工坊
2020/11/11
1K0
CMU出品,计算机图形学秋季课程已上线,B站同步字幕视频
他2年拿下博士学位,发表11篇顶会论文!浙大校友李旻辰斩获SIGGRAPH最佳博士论文奖
金磊 发自 凹非寺 量子位 报道 | 公众号 QbitAI 连续四年,SIGGRAPH最佳博士论文奖,被华人学者拿下。 今年,浙大校友、UCLA数学系博士后李旻辰斩获殊荣。 然而随之浮出的,可不单单是这份荣耀,还有他那开挂般的学术生涯。 来,感受一下一组数据: 仅仅2年时间,便取得博士学位。 博士期间发表了11篇SIGGRAPH。 这般经历,不禁引得网友直呼: 大家感受到了什么叫降维打击了吗? 超短的读博经历 2018年9月入学宾夕法尼亚大学(UPenn)攻读博士,2020年12月毕业。 两年多
量子位
2023/03/10
4710
他2年拿下博士学位,发表11篇顶会论文!浙大校友李旻辰斩获SIGGRAPH最佳博士论文奖
计算机图形学入门总结!
Computer Graphics is Awesome!下面我来梳理一下适合图形学入门的课程或者资料。
Datawhale
2021/04/20
2.6K0
大神碉堡!99 行代码实现的神奇效果
或许你不知道,电影和动画中特效有时仅仅短短的一秒,却可能需要高性能计算机演算一周,花费惊人。
逆锋起笔
2020/02/21
1K0
大神碉堡!99 行代码实现的神奇效果
“荡气回肠”!UCLA蒋陈凡夫万字长文回顾:从转系生到图形学终身教授的十二年
金磊 转载整理自 知乎 量子位 | 公众号 QbitAI 这是一篇由UCLA应用数学副教授蒋陈凡夫所撰写的万字长文,回顾了他在图形学物理模拟领域里十二年来的点点滴滴。 于人,于事,于学术,字里行间无不在透露着蒋陈凡夫对图形学的热爱与浪漫,感动了无数的网友。 在文中被他称为“少年英雄”的胡渊鸣,在看完后甚至直呼“荡气回肠”。 目前已经揽获近3000的赞。 (注:本文经授权转载,以下为原文) 最近评上tenure(终身教授),有人来祝贺:”Now you can freely decline review r
量子位
2022/09/22
7860
“荡气回肠”!UCLA蒋陈凡夫万字长文回顾:从转系生到图形学终身教授的十二年
搞科研,从好好读论文开始:沈向洋带你读论文了
「或许你永远不知道你以前读过的书能在什么时候派上用场,但请保持阅读,因为阅读的过程也是在你大脑中建立认知的过程。」 对于科研人员来说,读论文是一种必修技能。去年,沈向洋博士曾在线上公开课《You are how you read》中分享了他对于论文阅读与撰写的经验,引起领域内的高度关注。 在沈向洋看来,读论文分为几个阶段:最简单的是所谓的「消极阅读」(passive reading),即大概知道文章讲了什么;然后是「积极阅读」( active reading),主动思考这些知识有什么用;然后是「批判性阅读」
机器之心
2023/03/29
6270
搞科研,从好好读论文开始:沈向洋带你读论文了
Taichi 的开源与创业故事
作者 | 胡渊鸣 策划 | 褚杏娟 “太极”跟“冰雪奇缘”这两个看似毫不相干的词汇是如何同框的?让我们跟随胡渊鸣博士的讲述来了解 Taichi 从诞生到走向大众面前再到“成人礼”再到茁壮成长的故事。希望 Taichi 的开源创业之路给大家的生产实践带来共鸣与帮助。 本文整理自太极图形联合创始人、首席执行官胡渊鸣在 DIVE 全球基础软件创新大会 2022(创业与投资专场)的演讲分享,主题为“Taichi 的开源与创业故事”。 分享主要分三个部分展开:第一部分 Taichi 及其演化历史,第二部分 Ta
深度学习与Python
2023/03/29
5960
Taichi 的开源与创业故事
Why Taichi (1): 为什么设计新的编程语言?
(发私信还担心被无视,没想到很快就收到同意的回复)。近日大佬成立公司专门做图形学方面的开源工作,小编作为图形学爱好者甚是激动
ACM算法日常
2021/05/11
1.6K0
推荐阅读
推开图形学大门、进入模拟的世界,超火的太极图形课程开课了
5890
胡渊鸣的「太极图形」又融了5000万美元,接下来推出3D内容创作平台
6540
Xue Bin Peng获SIGGRAPH 2022最佳博士论文,太极胡渊鸣获提名
6960
姚班大神胡渊鸣回国创业!超一半员工为清华校友,团队人均竞赛金牌数≥2
1K0
多材料耦合俄罗斯方块?胡渊鸣给「太极图形课」交作业了!
6170
多项核心技术进展发布!胡渊鸣创业后首现身,讲述「太极图形」的前世今生
8970
清华毕业生开发新特效编程语言,99行代码实现《冰雪奇缘》,网友:大神碉堡!创世的快乐「建议收藏」
3.3K0
支持异构图、集成GraphGym,超好用的图神经网络库PyG更新2.0版本
7780
计算机图形也能自动可微:MIT学神的微分太极框架开源,论文已被ICLR 2020接收
8470
太極:MIT华人学神开源的计算机图形库
9630
MIT博士毕业,「太极」作者胡渊鸣回国创业,专注图形编程
1.6K0
AI公司创始人冒充中科大少年班校友:学历是假的,合伙人也是假的
3710
CMU出品,计算机图形学秋季课程已上线,B站同步字幕视频
1K0
他2年拿下博士学位,发表11篇顶会论文!浙大校友李旻辰斩获SIGGRAPH最佳博士论文奖
4710
计算机图形学入门总结!
2.6K0
大神碉堡!99 行代码实现的神奇效果
1K0
“荡气回肠”!UCLA蒋陈凡夫万字长文回顾:从转系生到图形学终身教授的十二年
7860
搞科研,从好好读论文开始:沈向洋带你读论文了
6270
Taichi 的开源与创业故事
5960
Why Taichi (1): 为什么设计新的编程语言?
1.6K0
相关推荐
推开图形学大门、进入模拟的世界,超火的太极图形课程开课了
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档