nginx同一个端口不同域名如何配置
原创标题:Nginx同一端口下拥护多个域名的配置详解
Nginx是一款强盛的Web服务器,它以其高效、稳定和易于管理的特点被广泛应用。在某些场景中,我们也许需要在一个服务器上同时监听多个域名,这就需要用到Nginx的虚拟主机(Virtual Host)功能。下面我们将详细介绍怎样在Nginx中配置一个端口监听多个域名。
1. 基本概念
在Nginx中,每个域名或子域名通常对应一个虚拟主机配置文件。当请求到达时,Nginx会选用域名解析到相应的虚拟主机配置,然后将请求转发给对应的Web服务进程。
2. 配置步骤
创建虚拟主机配置文件
首先,我们需要在Nginx的conf.d目录下创建一个或多个`.conf`文件,每个文件代表一个虚拟主机。例如,我们有两个域名:example.com和sub.example.com,可以创建`example.com.conf`和`sub.example.com.conf`。
server {
listen 80; # 监听80端口
server_name example.com; # 域名1
root /var/www/example.com; # 网站根目录
index index.html index.htm; # 主页索引文件
# 其他相关配置...
}
server {
listen 80;
server_name sub.example.com; # 域名2
root /var/www/sub.example.com;
index index.html index.htm;
# 其他相关配置...
}
配置多域名共享路径
如果两个域名共享相同的静态资源路径,可以在`root`或`location`块中设置`try_files`指令,如`/index.html =404;`描述尝试访问`/index.html`,如果不存在则返回404失误。
location /common {
try_files $uri $uri/ =404;
alias /path/to/common/files/;
}
SSL配置
如果需要拥护HTTPS,需要为每个域名配置SSL证书。在`listen`块中添加`ssl`选项,并在`server`块中添加SSL相关配置。
server {
listen 443 ssl; # 监听443端口
server_name example.com;
ssl_certificate /path/to/cert.pem;
ssl_certificate_key /path/to/key.pem;
# 其他SSL配置...
}
3. 重启Nginx
完成配置后,记得重启Nginx以使更改生效。
sudo service nginx restart
总结
通过以上配置,Nginx可以有效地在同一台服务器上同时处理多个域名的请求。记住,对于每个域名,都需要自由的`server`块来定义其特定的配置。愿望这个指南能帮助你更好地懂得和使用Nginx的虚拟主机功能。