nginx 根据域名打开相应首页

本文介绍了一个具体的Nginx与Tomcat集成配置案例,通过该配置实现了静态资源由Nginx处理,动态请求转交给Tomcat的架构。特别针对同一台服务器上的前后端分离项目进行了详细说明。

遇到一个需求:首先网站有一个前端一个后台  由于用的session  前后端混乱了 所以在域名解析的时候   www.xxxxx.com  指向前端首页      system.xxxxx.com 指向后台首页;

整个项目的前后端代码是分开的  但是总归是一个项目。在网上看到有很多的nginx配置都是对多个应用(多个网站的域名转发) 

我的这个项目  是  nginx 和tomcat在一台机器上     nginx处理静态文件   其他的交给tomcat   tomcat监听8099端口


完整配置如下:





user  root;
worker_processes  2;


#error_log  logs/error.log;
#error_log  logs/error.log  notice;
#error_log  logs/error.log  info;


pid        logs/nginx.pid;




events {

#windows用户  不用  use poll;

    use epoll;
    worker_connections  2048;
}




http {
    include       mime.types;
    default_type  application/octet-stream;


    #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  logs/access.log  main;


    sendfile        on;
    #tcp_nopush     on;


    #keepalive_timeout  0;
    keepalive_timeout  65;
    
    
    # gzip压缩功能设置
    gzip on;
    gzip_min_length 1k;
    gzip_buffers    4 16k;
    gzip_http_version 1.0;
    gzip_comp_level 6;
    gzip_types text/plain text/css text/javascript application/json application/javascript application/x-javascript application/xml;
    gzip_vary on;
    
    
    #FastCGI相关参数是为了改善网站的性能:减少资源占用,提高访问速度。
fastcgi_connect_timeout 300;
fastcgi_send_timeout 300;
fastcgi_read_timeout 300;
fastcgi_buffer_size 64k;
fastcgi_buffers 4 64k;
fastcgi_busy_buffers_size 128k;
fastcgi_temp_file_write_size 128k;


  # http_proxy 设置
    client_max_body_size   10m;
    client_body_buffer_size   128k;
    proxy_connect_timeout   75;
    proxy_send_timeout   75;
    proxy_read_timeout   75;
    proxy_buffer_size   4k;
    proxy_buffers   4 32k;
    proxy_busy_buffers_size   64k;
    proxy_temp_file_write_size  64k;
    proxy_temp_path   /mnt/software/nginx/proxy_temp 1 2;


    #设定请求缓冲
    client_header_buffer_size    1k;
    large_client_header_buffers  4 4k;
    #设置对  80端口访问的限制
server{ 
listen   80 default; 
server_name      _; 
return 403; 



    server {
        listen       80;
       
        server_name  *.xxxxx.com;
        charset utf-8;

        #access_log  logs/host.access.log  main;




index index.html index.htm index.jsp index;
#对  *.xxxxx.com 的域名  匹配   (*后面不带路径和参数   也就是用户第一次计入网站的  域名    *.xxxxx.com   or     *.xxxxx.com/
location = / {       

if ($host = 'system.xxxxx.com'){

#重定向为:system.xxxxx.com/www/system/index

rewrite ^(.*) /www/system/index last;
}

if ($host = 'test.xxxxx.com'){

#重定向为:system.xxxxx.com/www/front/index

rewrite ^(.*) /www/front/index/ last;
}
交给tomcat服务器处理
proxy_pass   http://localhost:8099/; 
}
    
location / {

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_pass http://localhost:8099/;

}



          #静态文件nginx处理
location ~ \.(htm|html|gif|jpg|jpeg|png|bmp|swf|ico|rar|zip|txt|flv|mid|doc|ppt|pdf|xls|mp3|wma)$ {  
root /mnt/software/tomcat/webapps/; 
expires 7d; 


location ~ \.(js|css)$ {  
root /mnt/software/tomcat/webapps/; 
expires 1h; 


location ~^/(WEB-INF)/{
deny all;
}



        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   html;
        }

   }


}

### 如何配置 Nginx 实现域名访问 API 为了使 Nginx 能够通过域名访问 API,需要正确配置 `server` `location` 块。这涉及到指定监听端口、绑定域名以及设定反向代理规则。 #### 1. 创建新的 Nginx 配置文件 对于特定的应用程序,建议创建独立的配置文件以便管理维护。命令如下: ```bash sudo vim /etc/nginx/sites-available/api-domain ``` 此操作会打开一个名为 `api-domain` 的新配置文件用于编辑[^2]。 #### 2. 编辑配置文件内容 在该文件中加入必要的配置,确保指定了要使用的域名并设置了相应的路径映射至后端服务。下面是一个典型的例子: ```nginx server { listen 80; server_name api.example.com; location / { proxy_pass http://localhost:5000; # 这里应替换为实际运行API的服务地址端口号 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-Proto $scheme; } } ``` 这段代码实现了当用户请求到达 `api.example.com` 时,Nginx 将作为中介转发给本地主机上的另一个进程处理(比如 FastAPI 或 Flask 应用),然后再把响应返回给客户端[^1]。 #### 3. 启用站点配置并将更改应用到 Nginx 完成上述修改之后,还需要激活这个新的配置文件,并重新加载 Nginx 来生效变更: ```bash sudo ln -s /etc/nginx/sites-available/api-domain /etc/nginx/sites-enabled/ sudo nginx -t && sudo systemctl reload nginx ``` 以上步骤确保了所作改动被正式纳入 Nginx 工作流程之中[^3]。 #### 4. 测试配置有效性 最后一步是验证一切正常工作。可以通过浏览器或者 curl 等工具尝试访问已配置好的 URL 地址,确认能否成功获取预期的结果数据。 ```bash curl http://api.example.com/endpoint ``` 如果一切顺利,则说明已经成功完成了基于域名访问 API 的 Nginx 设置过程。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值