怎么使用nginx代理实现静态资源访问

一. 目标:

为了通过nginx请求静态资源(css、图片等),通过nginx代理进行页面预览。

二. 实现效果:

通过浏览器输入nginx代理地址以打开页面方式访问本地html文件,也可以通过访问代理路由访问接口实现页面预览功能.注:我演示的是在本地windows开发环境下的配置

三. 具体配置1. nginx配置本地静态工程代理

找到nginx配置文件nginx.conf,配置nginx代理

server{
listen 80;


#前端门户工程
location / {
alias D:/workspace/sc-multipl-static-web-project/;

index index.html;

}

使用Nginx代理实现静态资源访问

说明:D:/workspace/sc-multipl-static-web-project/ 是你的前端工程文件路径

保存配置文件并重启nginx,浏览器输入 localhost:80 验证

2. win10配置本地域名实现域名访问

域名访问实际上是通过对应ip地址,再通过ip访问服务的,如果我们没有开通互联网域名,可以通过配置本地域名映射模拟域名访问的(只在本机有效)打开C:\Windows\System32\drivers\etc,找到hosts文件,如果没有则自己新增一个,以管理员身份打开编辑,输入

127.0.0.1 www.chen123.com

再打开nginx配置文件

server{
listen 80;

server_name www.chen123.com;

ssi on;

ssi_silent_errors on;

#前端门户工程
location / {
alias D:/workspace/sc-multipl-static-web-project/;

index index.html;

}

}

保存配置文件并重启nginx,浏览器输入 localhost:chen123 验证

3.nginx配置页面预览路由

首先,你要先实现一个页面预览接口,返回格式为String类型,内容其实就是html的文本内容再打开nginx配置文件

http {
include mime.types;

default_type application/octet-stream;


sendfile on;

#tcp_nopush on;


#keepalive_timeout 0;

keepalive_timeout 65;


#gzip on;

#cms页面预览路由
upstream cms_server_pool {
server 127.0.0.1:31001 weight=10;

}

server{
listen 80;

server_name www.xuecheng.com;

ssi on;

ssi_silent_errors on;

#前端门户工程
location / {
alias D:/workspace/sc-multipl-static-web-project/;

index index.html;

}
#页面预览
location /cms/preview/ {
proxy_pass http://cms_server_pool/cms/preview/;

}

}
}

http://cms_server_pool/cms/preview/ 就是你要实现的页面预览接口,通过配置路由实现跳转到真实地址,

upstream cms_server_pool {
server 127.0.0.1:31001 weight=10;

#如果有多个服务器,可以写在下面,例如
#server 127.0.0.1:31002 weight=10;

}

保存配置文件并重启nginx,浏览器输入 http://cms_server_pool/cms/preview 验证

我本地的nginx配置如下

events {
worker_connections 1024;

}

http {
include mime.types;

default_type application/octet-stream;


sendfile on;

keepalive_timeout 65;


#gzip on;

#cms页面预览路由
upstream cms_server_pool {
server 127.0.0.1:31001 weight=10;

}

server{
listen 80;

server_name www.xuecheng.com;

ssi on;

ssi_silent_errors on;

#前端门户工程
location / {
alias D:/workspace/sc-multipl-static-web-project/;

index index.html;

}
#页面预览
location /cms/preview/ {
proxy_pass http://cms_server_pool/cms/preview/;

}
}
}

Nginx是一个流行的高性能Web服务器和反向代理服务器,既可以作为Web服务器又可以作为代理服务器。在实际生产环境中,Nginx通常用作静态文件服务器,可以显着提高系统性能和响应速度。本文将介绍如何使用Nginx代理实现静态资源访问,包括配置Nginx、优化Nginx并实现缓存等方面。
配置Nginx
首先,需要配置Nginx以便它能够代理静态资源。使用以下代码可以创建一个新的Nginx服务器块:
```
server {
listen 80;
#设置代理资源路径
location /static {
#本地静态资源路径
root /var/www/myapp;
}
}
```
这个Nginx服务器块将监听所有传入的80端口请求,然后将它们传送到var/www/myapp目录下的静态资源路径中的位置。接下来,启用Nginx服务器块并重新加载Nginx以使配置生效:
```
sudo service nginx start
sudo service nginx reload
```
如果设置正确,则可以从Web浏览器访问/static目录中的文件。
优化Nginx
接下来,需要对Nginx进行优化以提高性能和响应速度。这里提供几个可行的方案:
1. Gzip压缩
Gzip压缩可以减小浏览器和服务器之间传输的数据大小,因此可以显着提高网站速度。可以在Nginx配置文件的http块中添加以下行来启用Gzip压缩:
```
gzip on;
gzip_types text/plain text/css application/json application/javascript text/xml application/xml application/xml+rss text/javascript;
gzip_comp_level 6;
```
2. 缓存
缓存可以显著提高网站的性能。Nginx缓存是一个简单的但强大的解决方案,可以通过自定义HTTP报头来控制缓存的行为。以下是示例配置文件:
```
proxy_cache_path /var/cache/nginx levels=1:2 keys_zone=my_cache:10m inactive=60m;
proxy_cache_key \"$scheme$request_method$host$request_uri\";
proxy_cache_valid 200 60m;
proxy_cache_valid 404 1m;
```
这个配置将在/var/cache/nginx目录下创建一个名为my_cache的代理缓存文件,并将有效时间设置为60分钟。此外,它设置了一个缓存键,并设置了200秒和404秒的有效时间。
3. 负载均衡
负载平衡旨在将Web流量平均分配到多个Web服务器上。Nginx可以作为负载平衡器,可以通过配置多个服务器块并添加某种代理方法来分配流量。例如:
```
upstream backend {
server backend1.example.com;
server backend2.example.com;
}
server {
listen 80;
location / {
proxy_pass http://backend;
}
}
```
这个配置中的upstream块定义了两个后端服务器,并配置了Nginx以便它可以将流量分配给这两个服务器。
实现缓存
缓存可以大大提高Web页面的速度和响应时间。Nginx可以通过添加代理头来实现缓存。以下是一些常用的代理头:
1. Cache-Control
缓存控制报头是用来控制Web缓存的。例如:
```
Cache-Control: max-age=3600
```
这个报头指定了资源可以缓存的最长时间为3600秒。
2. If-Modified-Since/Last-Modified
If-Modified-Since请求报头是用来控制缓存的。例如:
```
If-Modified-Since: Sat, 29 Oct 2016 19:43:31 GMT
```
这个报头包含了上一次请求中返回的Last-Modified报头。
3. ETag
ETag缓存头使得浏览器可以通过比较ETag值来检查资源是否已更新。例如:
```
ETag: \"686897696a7c876b7e\"
```
总结
通过Nginx代理实现静态资源访问是一种高性能,可靠,安全的方式。优化Nginx可以显著提高性能和响应时间,而缓存可以使得网站更快地加载。Nginx提供了一种易于配置的缓存机制,只需加入一些代理头即可实现。尝试以上建议,以获得更快的静态资源访问速度。