- ubuntu12.04环境下使用kvm ioctl接口实现最简单的虚拟机
- Ubuntu 通过无线网络安装Ubuntu Server启动系统后连接无线网络的方法
- 在Ubuntu上搭建网桥的方法
- ubuntu 虚拟机上网方式及相关配置详解
CFSDN坚持开源创造价值,我们致力于搭建一个资源共享平台,让每一个IT人在这里找到属于你的精彩世界.
这篇CFSDN的博客文章nginx反向代理二级域名绑定方法及注意事项由作者收集整理,如果你对这篇文章有兴趣,记得点赞哟.
摘要 。
本文介绍了利用nginx实现多域名和多站点的绑定的方法及相关注意事项。您也可以只看标题或红色标注部分。☺ 。
1、应用场景 。
我们经常会遇到在同一台服务器建立多个Web站点的情况,普遍的做法是为不同的站点配置不同的端口,这样就可以用IP:Port的形式访问.
但是用IP访问毕竟不方便,不生动,不容易记忆。那么,我们可以给每个站点绑定不同的域名。(在这里我们仅谈公网情况)即使我们只有一个域名,我们可以设置多个二级域名,使用Nginx很容易实现.
2、基本要求 。
通常,网上教程会直接贴一段配置文件的代码,告诉我们如此这般就Ok了。但我发现很多新手看着教程配置,并不能像博主那样就Success了,所以接下来我们谈一下基本原理.
首先,要有一个自己能管理的域名,比如我有一个 postmsg.cn 的域名,就可以生出多个子域名,二世三世千万世…… 。
其次,有一台能访问的公网服务器,可以在这台服务器上建立自己的Web站点,一个两个三四个,对应端口不一.
然后,就是域名和站点的绑定,一个萝卜一个坑,当然也可以多个萝卜一个坑…… 。
3、一般配置 。
需要配置的地方有两个,我们先谈首要先决条件,也是有些新手容易忽略的地方.
(1)域名配置 。
把域名的A记录解析指向我们的公网服务器,这一点一般人都能想到。解析的时候只能加IP,是不能带端口号的,即只能使用默认的80端口。(不讨论域名转发) 。
若想实现子域名绑定,在域名解析的时候必须配置合理。否则只靠Nginx是不行的.
例如我要把子域名 p.postmsg.cn 绑定到 服务器的 8001端口,我首先要保证访问 p.postmsg.cn 的请求能到达该服务器,然后Nginx才能处理.
此时,要么在域名A记录解析里加一条 p 的主机记录,要么主机记录里有通配符 * 的配置(*.postmsg.cn的访问全部解析到对应的服务器,慎用),只设置@和www肯定是不行的.
图1 - 域名解析示例 。
(2)主机配置 。
域名的请求到达主机之后,一切才可以交给Nginx来处理.
修改Nginx配置的时候,可以直接在默认配置文件(例如/etc/nginx/nginx.conf,如以下代码片段所示)里修改,也可以在某个目录下新建独立的配置文件,然后 include 这个目录下的配置文件(如第17行所示).
1
2
3
4
5
6
7
8
9
10
11
12
13
14
|
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;
}
|
这是Nginx读取配置文件的格式,我们的配置通常写在 http { } 块里,加上 server 块,在server块里配置。刚才也说了,server块可以写在一个单独文件里,在nginx.conf里包含该文件,同时,支持嵌套 include.
接下来看一下 server 块的写法:
1
2
3
4
5
6
7
8
9
10
11
12
|
server {
listen 80;
server_name p.postmsg.cn;
location / {
proxy_pass http:
//127
.0.0.1:8008;
proxy_redirect off;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
#access_log logs/p_access.log;
}
|
这里的 server_name 对应配置的域名,proxy_pass对应代理的真实地址.
(3)注意事项一 。
一定要把 80 端口留给负责代理的Nginx。我们可以在一个服务器上同时使用Apache httpd,Nginx,Tomcat,但是域名解析只能使用默认的80端口,负责代理的同志要拿到第一手请求.
(4)注意事项二 。
即时生效性。有的朋友感觉自己配置的都对,也重启服务了,可就是看不到想要的结果。这里有三个方面的可能因素.
4、总结 。
本文闲扯了利用Nginx实现多域名代理的相关事宜.
以上所述是小编给大家介绍的nginx反向代理二级域名绑定方法及注意事项,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对我网站的支持! 。
原文链接:https://www.cnblogs.com/visualiz/p/8794862.html 。
最后此篇关于nginx反向代理二级域名绑定方法及注意事项的文章就讲到这里了,如果你想了解更多关于nginx反向代理二级域名绑定方法及注意事项的内容请搜索CFSDN的文章或继续浏览相关文章,希望大家以后支持我的博客! 。
我有一个 foo 类,它有一个 bar 方法,它接受可调用的东西(函数指针/仿函数)。这个可调用的东西应该作为绑定(bind)元素传递给另一个方法 doit 和第三个方法 bar_cb 方法。 #in
我正在尝试在我的 WPF 4.0 应用程序(使用 VS 2010 Pro RTM)中创建自定义 TabItem 模板/样式,但尽管一切似乎都正常工作,但我注意到跟踪窗口中存在绑定(bind)错误。 我
作为一名刚接触 Android 的开发人员,我想我可能误解了绑定(bind)服务。 我创建了一项服务来结束对服务器的访问。作为此服务的一部分,该服务正在监听多播地址,以识别本地网络上的设备何时出现和消
这个问题在这里已经有了答案: What is the use of the JavaScript 'bind' method? (23 个回答) 关闭 7 年前。 所以我一直在尝试了解一些 JS 上
我不明白这三种语法之间的区别: where a = f (b) do a <- f (b) do let a = f (b) 我确实明白了a <- f(b)与其他两个不同,在大多数情况下,我尝试了所有
我在将 Cocoa 项目从手动同步接口(interface)模型转换为绑定(bind)模型时遇到问题,这样我就不必担心接口(interface)粘合代码。 我关注了 CocoaDevCentral C
我正在尝试找出一种好的方法来对处理大数据集的代码进行并行化,然后将结果数据导入 RavenDb。 数据处理受 CPU 限制和数据库导入 IO 限制。 我正在寻找一种解决方案,以对 Environmen
我正在 foreach 循环中生成单选按钮。我试图将选中的属性绑定(bind)到父级中的基本可观察值。不幸的是,当单击单选按钮时,父级的属性似乎没有在单击处理程序中更新。 基于一些previous w
在我的 Windows Phone 应用程序中,我有两个 LongListSelectors并排在页面上。我想做到这一点,以便当用户滚动其中一个时,另一个滚动相同的量。 两个 LongListSele
我在网上看到这个问题准备面试: Given a non-preemptive kernel which type of process will get affected morein terms o
我有一个 foreach 绑定(bind),如下所示: Summary Permitting 原因是有两个选项卡始终存在,并且我根据是否添加了其他选项卡来添加其他选项
任何人都有绑定(bind)相同的情况DataContext到 TextBlock 中的 Text 属性(例如)。 我必须分配 DataContext以我的风格反射(reflect)基于 Datacon
给定以下代码: Login 和下面的javascript $(function () { $('#btnLogin').click(function () { co
我使用 boost::asio 创建了一个服务器。我在绑定(bind)到端点时遇到问题。所以,如果我在构造函数中初始化一个接受器: Server::Server(QWidget *parent) :
我正在将现有项目从 MySQL 转换为 Postgres。代码中有相当多的原始 SQL 文字使用 ? 作为占位符,例如 SELECT id FROM users WHERE
似乎在绑定(bind)某些数据时出错了,有人可以帮我解决我哪里出错了,尽管我无法弄清楚。 真的不需要在这里显示太多,这是 Binding,我已经通过移除背景并在其中放置颜色来测试背景,效果很好。 编辑
我正在尝试使用 wcf 构建一个 http 监听器(web 服务)。这个监听器是一个更大的桌面应用程序的一部分。此桌面应用程序还会调用 http 监听器。 当监听器接收到数据时,它应该被传递到桌面应用
嘿嘿。 我正在使用 Node.JS 和 child_process 来生成 bash 进程。我试图了解我是否正在执行 I/O 绑定(bind)、CPU 绑定(bind)或两者兼而有之。 我正在使用 p
尝试执行以下操作并出现“Got interpolation ({{}}) where expression was expected”错误。 {{item.name}} 谢谢!
我有一个导入的 Java 库,它是我解决方案中的“绑定(bind)库”项目。 我正在尝试从解决方案中的另一个项目绑定(bind)到第 3 方库中的服务。 第 3 方库文档 [在 java 中] 非常简
我是一名优秀的程序员,十分优秀!