开发者社区 问答 正文

动静分离的nginx配置

我现在要在服务器上配置动静分离,请教一下配置:

域名:i.xxx.com , www.xxx.com

服务器文件,静态页面:/home/xxx/static

项目部署路径(不包含静态页面)/home/xxx/ROOT

现在是输入以html,htm结尾的页面都请求/home/static,

以action、do、jsp结尾的都代理给tomcat处理。

怎么配置?

 

展开
收起
huc_逆天 2020-05-28 09:22:01 382 分享 版权
阿里云 AI 助理回答

要在服务器上配置动静分离,通常涉及Web服务器(如Nginx或Apache)与应用服务器(如Tomcat)的协作。这里以Nginx为例,说明如何根据您的需求进行配置。

1. 安装Nginx

首先确保您已经在服务器上安装了Nginx。如果尚未安装,可以通过以下命令在基于Debian/Ubuntu的系统中安装:

sudo apt-get update
sudo apt-get install nginx

对于基于CentOS/RHEL的系统,可以使用:

sudo yum install epel-release -y
sudo yum install nginx -y

2. 配置Nginx

编辑Nginx的配置文件,通常是/etc/nginx/nginx.conf或者/etc/nginx/sites-available/default,具体取决于您的Nginx安装和配置方式。下面是一个示例配置,实现了您的需求:

server {
    listen 80;
    server_name i.xxx.com www.xxx.com;

    location / {
        # 将动态请求代理给Tomcat处理
        if ($uri ~* \.(action|do|jsp)$) {
            proxy_pass http://localhost:8080; # 假设Tomcat运行在8080端口
            proxy_set_header Host $host;
            proxy_set_header X-Real-IP $remote_addr;
            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        }
        # 静态资源直接服务
        root /home/xxx/static;
        index index.html index.htm;
    }

    # 特别指定静态页面的处理
    location ~* \.(html|htm)$ {
        root /home/xxx/static;
        expires 30d; # 设置静态资源缓存时间
    }
}

3. 重启Nginx

保存配置文件后,需要重启Nginx使更改生效:

sudo service nginx restart

或者,在某些系统上可能是:

sudo systemctl restart nginx

4. 确认Tomcat配置

确保Tomcat正确配置并监听在上述Nginx配置中指定的端口(默认为8080),且应用程序已部署在/home/xxx/ROOT目录下。

注意事项

  • 上述Nginx配置示例中,通过if语句来区分动态和静态请求,虽然常见,但有时可能不推荐用于性能和维护性考虑。更推荐的做法是使用精确的location块匹配。
  • 确保Nginx和Tomcat之间的通信畅通无阻,没有防火墙规则阻止它们之间的连接。
  • 根据实际情况调整Tomcat的监听地址和端口,以及Nginx的root路径等配置项。

按照以上步骤操作后,您的域名应该能够实现动静分离,即静态页面由Nginx直接提供服务,动态请求则被转发到Tomcat处理。

有帮助
无帮助
AI 助理回答生成答案可能存在不准确,仅供参考
0 条回答
写回答
取消 提交回答