您的位置:

Nginx配置多个域名

一、Nginx配置多个域名访问不同的前端

在实际应用中,我们常常需要配置一个Nginx服务器来代理多个域名,每个域名都有一个独立的前端页面和后端服务。Nginx配置多个域名访问不同的前端,可以采用不同的虚拟主机(server)进行配置。

以下是一个简单的实现,以example.com和example.net为例,让它们指向不同的静态资源和后端服务:

server {
    listen 80;
    server_name example.com;
    root /var/www/example.com;
    ...
}

server {
    listen 80;
    server_name example.net;
    root /var/www/example.net;
    ...
}

二、Nginx配置二级域名

除了主域名,还有常见的二级域名,例如www.example.com和blog.example.com。Nginx配置二级域名可以通过server_name指定对应的域名,不同的二级域名可以映射到不同的应用程序。

以下是一个简单的实现,以www.example.com和blog.example.com为例:

server {
    listen 80;
    server_name www.example.com;
    ...
}

server {
    listen 80;
    server_name blog.example.com;
    ...
}

三、Nginx配置跨域请求

在跨域请求的场景中,浏览器会将跨域请求拦截,Nginx可以用来解决跨域访问的问题。Nginx配置跨域请求可以通过HTTP头信息中的Access-Control-Allow-Origin来设置允许跨域访问的来源。

以下是一个简单的实现,将example.com中AJAX请求访问到example.net时需要设置跨域访问:

server {
    listen 80;
    server_name example.com;
    ...
    #允许example.net跨域访问
    add_header 'Access-Control-Allow-Origin' 'http://example.net';
}

四、Nginx配置多域名代理访问

在某些场景下,我们需要通过Nginx配置多域名代理访问,例如内网访问外网资源等。Nginx配置多域名代理访问可以通过proxy_pass指令来实现。

以下是一个简单的实现,以example.com和example.net为例,将example.com代理访问到example.net的后端服务:

server {
    listen 80;
    server_name example.com;
    location / {
        proxy_pass http://example.net/backend/;
    }
}

五、Nginx配置域名限制访问

在某些情况下,我们需要限制某些域名的访问权限,Nginx配置域名限制访问可以通过access指令来实现。例如,只允许example.com和example.net访问,其余的域名则被禁止访问:

server {
    listen 80;
    server_name example.com example.net;
    ...
    #只允许example.com和example.net访问
    allow example.com;
    allow example.net;
    deny  all;
}

六、Nginx配置域名解析

在DNS解析时,Nginx可以支持从多个域名中选择一组IP地址应答请求。Nginx配置域名解析可以通过resolver指令来实现该功能。

以下是一个简单的实现,以example.com和example.net作为域名:

resolver 8.8.8.8;
server {
    listen 80;
    server_name example.com;
    set $backend http://backend.example.net/;
    ...
    location / {
        proxy_pass $backend;
    }
}