开发者社区 问答 正文

[求助]nginx + tomcat配置https,自定义非443端口

  1. nginx + tomcat配置https,自定义非443端口,怎么配置呢?要实现这种访问https://domain:81/test 格式。
  2. 如果问题1已经配置了,但是为啥项目中css,js等文件404?

展开
收起
JaneYork 2021-04-15 13:31:07 1149 分享 版权
阿里云 AI 助理回答

配置Nginx与Tomcat以实现通过非标准端口(如81)访问HTTPS服务,并确保CSS、JS等静态资源能够正确加载,需要分两步进行:首先配置Nginx以监听HTTPS请求并转发到Tomcat,然后确保Tomcat应用中的资源引用是相对路径或正确处理了HTTPS和非标准端口。下面是具体步骤:

1. Nginx配置

编辑Nginx的配置文件(通常位于/etc/nginx/nginx.conf/etc/nginx/sites-available/default),添加或修改如下内容以支持HTTPS并通过81端口访问:

server {
    listen 81 ssl;
    server_name domain; # 将domain替换为你的域名

    ssl_certificate /path/to/your/cert.pem; # SSL证书路径
    ssl_certificate_key /path/to/your/key.pem; # SSL私钥路径
    ssl_protocols TLSv1 TLSv1.1 TLSv1.2 TLSv1.3; # 支持的SSL协议版本
    ssl_ciphers HIGH:!aNULL:!MD5; # 加密套件

    location / {
        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;
        proxy_set_header X-Forwarded-Proto $scheme;
    }
}

记得将上述路径替换为实际的SSL证书和私钥路径。

2. Tomcat配置

Tomcat本身不需要直接配置HTTPS,因为HTTPS处理是在Nginx层面完成的。但是,为了确保项目中的CSS、JS等静态资源可以正常加载,你需要检查以下几点:

  • 资源引用:确保应用中所有资源(CSS、JS、图片等)的引用都是相对路径,或者如果使用了绝对路径,则路径应正确反映了HTTPS和自定义端口(例如,使用//domain:81/path/to/resource.css而不是硬编码的http://或端口号不正确的情况)。
  • Context Path:如果你的应用部署在Tomcat的上下文中(比如不是根目录下,而是类似/test),确保Nginx的proxy_pass配置包含了正确的上下文路径,或者应用内部处理好资源的URL生成。

解决404问题

如果项目中的CSS、JS等文件出现404错误,除了检查资源引用外,还需要确认: - Tomcat应用是否已正确部署这些静态资源。 - Nginx的location配置是否正确匹配了请求路径,特别是当应用有特定的上下文路径时。 - 确保没有防火墙或其他网络设置阻止了对这些资源的访问。

完成以上配置后,重启Nginx和Tomcat服务,然后尝试访问https://domain:81/test,应该可以看到页面及所有资源正常加载。

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