Nginx设置动静分离,js和css无法加载,咋解决

JZ_7975 2016-01-06 09:41:07
Nginx .conf主要配置如下

#服务器集群
upstream tomcat{
server localhost:8081;
server localhost:8080;
}

server {
listen 8099;
server_name localhost;

#charset koi8-r;

#access_log logs/host.access.log main;

#location / {
# root html;
# index index.html index.htm;
#}



location ~ \.(jsp)?$ {
proxy_pass http://tomcat;
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_connect_timeout 100;
proxy_read_timeout 100;
proxy_send_timeout 100;

}

#配置Nginx的动静分离,使用后缀方式来匹配
location ~ .*\.(html|htm|gif|jpg|jpeg|bmp|png|ico|txt|js|css)$ {
expires 30d;
root /nginx-1.9.9;
}


其中nginx-1.9.9拷贝了web项目的img、script、css文件夹以及相关文件

在测试的时候发现,样式出不来,通过调试,看出浏览器提示
<script type="text/javascript" src="../scripts/boot.js">
重新载入页面以获取源代码: http://localhost/scripts/boot.js

Nginx设置的端口是8099,但是为什么页面走的80端口,不是应该是范围8099端口下面的
静态文件吗?

另外,还有一个,用了nginx后,访问系统特别慢,请问是什么原因?
...全文
21966 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
sinat_32709809 2017-08-03
  • 打赏
  • 举报
回复 1
location ~ .*\.(html|htm|gif|jpg|jpeg|bmp|png|ico|txt|js|css)$ { expires 30d; root /nginx-1.9.9; } 为什么我加载 这一段 我的nginx就启动不了?
  • 打赏
  • 举报
回复
引用 7 楼 JZ_7975 的回复:
[quote=引用 6 楼 JZ_7975 的回复:] [quote=引用 5 楼 jam00 的回复:] 怎么可能

server
    {
        listen 8099;
        server_name 192.168.1.134;
        root /home/wwwroot/default;
	
	location ~ .*\.(gif|jpg|jpeg|png)$
        {
            root /home/wwwroot/default/test;
        }
    }
监听的 8099 ,若是图片,则去 /home/wwwroot/default/test 这个目录下去找(test目录下有张 t.jpg 的图片),访问地址是 http://192.168.1.134:8099/t.jpg 测试可以访问,同理,设置其他的location 也是可行的 还有一种方式,设置多个 server ,同时监听 80 端口,server_name 不一样,比如静态的就叫 static.youdomain.com ,这里的root 就设置为 root /nginx-1.9.9; 这样访问 http://static.youdomain.com/test.js,就会跑到 /nginx-1.9.9 目录下去找 test.js
我按照第一种方法试了,还是不行,配置如下

 server {
        listen       8099;
        server_name  127.0.0.1;

        location ~ .*\.(gif|jpg|jpeg|png)$
        {
            root /test;
        }
其中test是在nginx的根目录下文件夹 访问,test/60.jgp提示404的错误 nginx访问时正常的[/quote] 图片,可以加载出来了,错误原因是location中的root路径写错了 写错绝对路径,就没有问题了,如: root E:/JAVA/nginx-1.9.9/test; 但是,为什么您的写法是相对路径,也没有问题?[/quote] 你是window系统,他是linux系统,/test在linux下就是绝对路径
liuliumei1992 2016-03-01
  • 打赏
  • 举报
回复
如果是在linux下,建议你改成root nginx-1.9.9;试试。
JZ_7975 2016-01-24
  • 打赏
  • 举报
回复
引用 6 楼 JZ_7975 的回复:
[quote=引用 5 楼 jam00 的回复:] 怎么可能

server
    {
        listen 8099;
        server_name 192.168.1.134;
        root /home/wwwroot/default;
	
	location ~ .*\.(gif|jpg|jpeg|png)$
        {
            root /home/wwwroot/default/test;
        }
    }
监听的 8099 ,若是图片,则去 /home/wwwroot/default/test 这个目录下去找(test目录下有张 t.jpg 的图片),访问地址是 http://192.168.1.134:8099/t.jpg 测试可以访问,同理,设置其他的location 也是可行的 还有一种方式,设置多个 server ,同时监听 80 端口,server_name 不一样,比如静态的就叫 static.youdomain.com ,这里的root 就设置为 root /nginx-1.9.9; 这样访问 http://static.youdomain.com/test.js,就会跑到 /nginx-1.9.9 目录下去找 test.js
我按照第一种方法试了,还是不行,配置如下

 server {
        listen       8099;
        server_name  127.0.0.1;

        location ~ .*\.(gif|jpg|jpeg|png)$
        {
            root /test;
        }
其中test是在nginx的根目录下文件夹 访问,test/60.jgp提示404的错误 nginx访问时正常的[/quote] 图片,可以加载出来了,错误原因是location中的root路径写错了 写错绝对路径,就没有问题了,如: root E:/JAVA/nginx-1.9.9/test; 但是,为什么您的写法是相对路径,也没有问题?
JZ_7975 2016-01-24
  • 打赏
  • 举报
回复
引用 5 楼 jam00 的回复:
怎么可能

server
    {
        listen 8099;
        server_name 192.168.1.134;
        root /home/wwwroot/default;
	
	location ~ .*\.(gif|jpg|jpeg|png)$
        {
            root /home/wwwroot/default/test;
        }
    }
监听的 8099 ,若是图片,则去 /home/wwwroot/default/test 这个目录下去找(test目录下有张 t.jpg 的图片),访问地址是 http://192.168.1.134:8099/t.jpg 测试可以访问,同理,设置其他的location 也是可行的 还有一种方式,设置多个 server ,同时监听 80 端口,server_name 不一样,比如静态的就叫 static.youdomain.com ,这里的root 就设置为 root /nginx-1.9.9; 这样访问 http://static.youdomain.com/test.js,就会跑到 /nginx-1.9.9 目录下去找 test.js
我按照第一种方法试了,还是不行,配置如下

 server {
        listen       8099;
        server_name  127.0.0.1;

        location ~ .*\.(gif|jpg|jpeg|png)$
        {
            root /test;
        }
其中test是在nginx的根目录下文件夹 访问,test/60.jgp提示404的错误 nginx访问时正常的
果酱很好吃 2016-01-15
  • 打赏
  • 举报
回复
怎么可能

server
    {
        listen 8099;
        server_name 192.168.1.134;
        root /home/wwwroot/default;
	
	location ~ .*\.(gif|jpg|jpeg|png)$
        {
            root /home/wwwroot/default/test;
        }
    }
监听的 8099 ,若是图片,则去 /home/wwwroot/default/test 这个目录下去找(test目录下有张 t.jpg 的图片),访问地址是 http://192.168.1.134:8099/t.jpg 测试可以访问,同理,设置其他的location 也是可行的 还有一种方式,设置多个 server ,同时监听 80 端口,server_name 不一样,比如静态的就叫 static.youdomain.com ,这里的root 就设置为 root /nginx-1.9.9; 这样访问 http://static.youdomain.com/test.js,就会跑到 /nginx-1.9.9 目录下去找 test.js
果酱很好吃 2016-01-14
  • 打赏
  • 举报
回复
<script type="text/javascript" src="../scripts/boot.js"> 这样访问,默认就是80端口啊,要么你就加上端口号访问,要么你就加一个监听80端口的server 也可以多加一个 listen 80;试试
JZ_7975 2016-01-14
  • 打赏
  • 举报
回复
引用 2 楼 jam00 的回复:
<script type="text/javascript" src="../scripts/boot.js"> 这样访问,默认就是80端口啊,要么你就加上端口号访问,要么你就加一个监听80端口的server 也可以多加一个 listen 80;试试
80端口被占用了 换成了监听8099端口,不好使,难道是因为nginx的监听端口8099无法通过url的方式访问造成的?
JZ_7975 2016-01-14
  • 打赏
  • 举报
回复
引用 1 楼 LOUISLIAOXH 的回复:
改成 proxy_set_header Host $host:8099 试试

<script type="text/javascript" src="../scripts/boot.js">
重新载入页面以获取源代码: http://localhost:8099/scripts/boot.js
加了,localhost的端口变成了8099, 但是样式还是无法加载出来,访问这个地址http://localhost:8099/scripts/boot.js 提示404错误,那说明动静分离还是没有起效
louisliao_1981 2016-01-08
  • 打赏
  • 举报
回复
改成 proxy_set_header Host $host:8099 试试

25,985

社区成员

发帖
与我相关
我的任务
社区描述
高性能WEB开发
社区管理员
  • 高性能WEB开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧