使用Nginx为静态资源提供服务
- 在/home下面导入一个静态的文件,包含html、css、js文件
- 创建static.conf配置文件:
在/usr/local/conf下面创建static.conf文件:
server {
listen 90;
server_name localhost;
#匹配静态页面
location / {
#指定静态资源的目录
root /home/foodie-shop;
# 指定默认的页面文件
index index.html;
}
#匹配静态资源,视频、音频、图片等,
location /static {
#root /home;
#设置别名,用户访问的时候以上面为准
alias /home/imooc;
}
#可与使用别名但是其实是相同路下的文件共存
location /imooc {
root /home;
}
}
- 打开nginx.conf文件,引入该配置文件
- 重新启动nginx
./nginx -s reload
- 直接访问localhost:90,就能看到页面啦
使用Gzip压缩提升请求效率
详细配置文件如下:
user root;
#工作进程
worker_processes 1;
# 错误日志 debug info notice warn error crit
#error_log logs/error.log;
#error_log logs/error.log notice;
#error_log logs/error.log info;
#nginx pid进程
#pid logs/nginx.pid;
events {
# Linux默认使用epoll
use epoll;
# 每个worker允许连接的客户端的最大连接数,根据硬件配置来的
worker_connections 1024;
}
http {
# 导入外部文件,目的是为了提高配置文件的可读性,mime.types位于/usr/local/nginx/conf
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 on;
#限制最小压缩,小于1字节文件不会压缩
gzip_min_length 1;
# 定义压缩的级别(压缩比),文件越大,压缩越多,但是cpu使用越多
gzip_comp_level 3;
# 压缩的文件类型
gzip_types text/plain application/javascript text/html text/css application/xml text/javascript image/jpeg image/gif image/png application/json text/javascript;
include static.conf;
#虚拟主机
server {
# 监听的端口
listen 88;
server_name localhost;
#charset koi8-r;
#access_log logs/host.access.log main;
location / {
root html;
index index.html index.htm;
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
}
server {
# 监听的端口
listen 89;
server_name localhost;
location / {
root html;
index hello.html index.htm;
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
}
}
配置虚拟主机时location的匹配规则
空格
:默认匹配,普通匹配
location / {
root /home;
}
=
:精确匹配
location = /imooc/img/face1.png{
root /home;
}
~*
:匹配正则表达式,不区分大小写
#符合图片的显示
location ~ \.(GIF|jpg|png|jpeg) {
root /home;
}
~
: 匹配正则表达式,区分大小写
#GIF必须大写才能匹配到
location ~ \.(GIF|jpg|png|jpeg) {
root /home;
}
^~
: 以某个字符路径开头
location ^~ /imooc/img {
root /home;
}
DNS域名解析
DNS(Domain Name System)
用户请求到服务器后端的过程
Tomcat之间是通过内网进行访问,外网IP对外关闭;
在Nginx中解决跨域问题
Cros跨域资源共享
- Cross-Origin Resource Sharing;
- 也许浏览器向Origin的服务器发起js请求获取响应;
解决方案:
- Jsonp;
- Springboot Cors;
- Nginx;
Nginx对跨域的支持,在目标虚拟主机配置里配置:
#允许跨域请求的域,*代表所有
add_header 'Access-Control-Allow-Origin' *;
#允许带上cookie请求
add_header 'Access-Control-Allow-Credentials' 'true';
#允许请求的方法,比如 GET/POST/PUT/DELETE
add_header 'Access-Control-Allow-Methods' *;
#允许请求的header
add_header 'Access-Control-Allow-Headers' *;
Nginx中配置资源防盗链
#对源站点验证
valid_referers *.XXX.com;
#非法引入会进入下方判断
if ($invalid_referer) {
return 404;
}