nginx 配置多域名

先说下我的需求:我在一台机器上部署了两个环境test和uat,希望通过两个域名访问,在另外一台机器上部署了nginx,通过一个nginx实现访问一个服务器上两个域名网站,具体配置如下:
另外配置还实现了动静分离。
1、nginx.conf 配置
#user  nobody;
#处理进程数量
worker_processes  2;     

#pid        logs/nginx.pid;

worker_rlimit_nofile 51200;
events {
    use epoll;
    worker_connections  51200;
}

http {
    include       mime.types;
    default_type  application/octet-stream;
    #nginx的HttpLog模块指定,指定nginx日志的输出格式,输出格式为access
    log_format access '$remote_addr - $remote_user [$time_local] "$request" '
                      '$status $body_bytes_sent "$http_referer" '
                      '"$http_user_agent" "$http_x_forwarded_for"';

    access_log  /opt/fmsj/nginx-pro/log/access.log  access;
    server_names_hash_bucket_size  128;
    client_header_buffer_size  32k;
    large_client_header_buffers 4 32k;
    client_max_body_size 356m;
    sendfile        on;
    tcp_nopush      on;

    #keepalive_timeout  0;
    keepalive_timeout  65;
    server_tokens   off;
    client_body_buffer_size  512k;
    proxy_connect_timeout    5;
    proxy_send_timeout      60;
    proxy_read_timeout       5;
    proxy_buffer_size       16k;
    proxy_buffers         4 64k;
    proxy_busy_buffers_size  128k;

    #开启gzip
    gzip  on;
    #允许压缩的最小字节数
    gzip_min_length 1k;
    #4个单位为16k的内存作为压缩结果流缓存
    gzip_buffers 4 16k;
    #设置识别HTTP协议版本,默认是1.1
    gzip_http_version 1.1;
    #gzip压缩比,可在1~9中设置,1压缩比最小,速度最快,9压缩比最大,速度最慢,消耗CPU
    gzip_comp_level  3;
    #压缩的类型
    gzip_types text/plain text/css application/x-javascript image/bmp application/javascript; 
    #让前端的缓存服务器混村经过的gzip压缩的页面
    gzip_vary  on; 
    #在指定的目录下面配置多个,server
    include /opt/fmsj/nginx-pro/conf/myconf/*.conf;
}



2、配置test.zjs.com 和 uat.zjs.com 
test.zjs.conf文件配置如下:
 server {
        listen       80;
        server_name  test.zjs.com;
        charset utf-8;
            #设定请求缓冲  
            #server_names_hash_bucket_size 128;  
        root  /opt/fmsj/apache-tomcat-8.0.21-test/webapps/fmsj/;

        location ~ \.(jsp|do)?$
        {
            proxy_pass  http://10.44.213.85:9090;
            root  /opt/fmsj/apache-tomcat-8.0.21-test/webapps/fmsj/;
            proxy_set_header           Host $host;
            proxy_set_header   X-Real-IP  $remote_addr;
            #proxy_set_header   X-Forwarded-For $proxy_add_x_forwarded_for;
            proxy_set_header X-Forwarded-For $remote_addr;
            index  index.jsp;           
        }

        location ~ .*\.(htm|html|gif|jpg|jpeg|png|bmp|swf|ioc|rar|zip|txt|flv|mid|doc|ppt|pdf|xls|mp3|wma|eot|svg|ttf|woff|woff2)$   #由nginx处理静态页面
        {
             expires 30d;   #使用expires缓存模块,缓存到客户端30天
             root  /opt/fmsj/apache-tomcat-8.0.21-test/webapps/;
        }
        location ~ .*\.(js|css)?$
        {
             expires 1d;
             root  /opt/fmsj/apache-tomcat-8.0.21-test/webapps/;
        }  
        location / {
             root  /opt/fmsj/apache-tomcat-8.0.21-test/webapps/;
             index  index.jsp;
             proxy_pass  http://10.44.213.85:9090; 
        } 
        #error_page  404              /404.html;

        # redirect server error pages to the static page /50x.html
        #
        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   html;
        }
    }


uat.zjs.com 文件如下:
 server {
        listen       80;
        server_name  uat.zjs.com;
        charset utf-8;
            #设定请求缓冲  
            #server_names_hash_bucket_size 128;  

        root  /opt/fmsj/apache-tomcat-8.0.21-uat/webapps/fmsj/;

        location ~ \.(jsp|do)?$
        {
            proxy_pass  http://10.44.213.85:9898;
            root  /opt/fmsj/apache-tomcat-8.0.21-uat/webapps/fmsj/;
            proxy_set_header           Host $host;
            proxy_set_header   X-Real-IP  $remote_addr;
            #proxy_set_header   X-Forwarded-For $proxy_add_x_forwarded_for;
            proxy_set_header X-Forwarded-For $remote_addr;
            index  index.jsp;           
        }

        location ~ .*\.(htm|html|gif|jpg|jpeg|png|bmp|swf|ioc|rar|zip|txt|flv|mid|doc|ppt|pdf|xls|mp3|wma|eot|svg|ttf|woff|woff2)$   #由nginx处理静态页面
        {
             expires 30d;   #使用expires缓存模块,缓存到客户端30天
             root  /opt/fmsj/apache-tomcat-8.0.21-uat/webapps/;
        }
        location ~ .*\.(js|css)?$
        {
             expires 1d;
             root  /opt/fmsj/apache-tomcat-8.0.21-uat/webapps/;
        }  
        location / {
             root  /opt/fmsj/apache-tomcat-8.0.21-uat/webapps/;
             index  index.jsp;
             proxy_pass  http://10.44.213.85:9898; 
        } 
        #error_page  404              /404.html;

        # redirect server error pages to the static page /50x.html
        #
        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   html;
        }


        # deny access to .htaccess files, if Apache's document root
        # concurs with nginx's one
        #
        #location ~ /\.ht {
        #    deny  all;
        #}
    }



<think>好的,用户想了解如何在Nginx配置多域名虚拟主机,特别是server_name的示例。首先,我需要回忆Nginx配置文件结构,通常每个虚拟主机在/etc/nginx/sites-available/目录下有一个单独的配置文件,然后通过符号链接到sites-enabled。用户可能需要知道如何设置多个server块,每个块处理不同的域名。 接下来,server_name指令是关键,它可以配置多个域名,支持通配符和正则表达式。比如,用户可能有example.com和test.com两个域名,需要指向同一个服务器IP。这时候需要两个server块,每个块中的server_name分别对应不同的域名,并指定不同的root目录。 另外,用户可能还关心通配符的使用,比如*.example.com匹配所有子域名,或者.example.com同时匹配example.com和www.example.com。还需要注意server_name的顺序,第一个被列为默认服务器,处理没有匹配Host头的请求。 安全问题也要提到,比如避免配置错误导致服务暴露。最后,配置完成后需要测试nginx -t检查语法,然后重启服务生效。可能用户还会遇到问题,比如域名解析是否正确,权限设置是否恰当等,这些都是常见的问题点。</think>在Nginx配置多域名虚拟主机主要通过`server_name`指令实现,核心是定义多个`server`块并指定不同域名。以下是具体实现步骤和示例: ### 一、基础配置方法 1. 创建虚拟主机配置文件 ```nginx # /etc/nginx/sites-available/example.com server { listen 80; server_name example.com www.example.com; root /var/www/example.com; index index.html; } server { listen 80; server_name test.com www.test.com; root /var/www/test.com; index index.html; } ``` 2. 通配符配置示例(支持子域名) ```nginx server { listen 80; server_name *.example.com; root /var/www/wildcard-example; } ``` ### 二、特殊匹配规则 1. 正则表达式匹配 ```nginx server { listen 80; server_name ~^(www\.)?(?<domain>.+)$; root /var/www/$domain; } ``` 2. 默认服务器配置(当请求头不匹配时生效) ```nginx server { listen 80 default_server; server_name _; return 403; # 禁止访问 } ``` ### 三、配置注意事项 1. 域名解析需指向服务器IP(通过DNS A记录配置) 2. 文件权限设置建议: ```bash sudo chown -R www-data:www-data /var/www/ ``` 3. 配置验证命令: ```bash sudo nginx -t && sudo systemctl reload nginx ``` ### 四、安全建议 1. 避免过度使用通配符`*`,防止域名劫持 2. 为每个虚拟主机单独设置访问日志: ```nginx access_log /var/log/nginx/example.com.access.log; ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值