nginx的用途
处理静态文件,索引文件以及自动索引;打开文件描述符缓冲;
无缓存的反向代理加速,简单的负载均衡和容错;
FastCGI,简单的负载均衡和容错;
模块化的结构。包括 gzipping, byte ranges, chunked responses,以及 SSI-filter 等 filter。如果由 Fast CGI 或其它代理服务器处理单页中存在的多个 SSI,则这项处理可以并行运行,而不需要相互等待;
支持 SSL 和 TLSSNI。
无缓存的反向代理加速,简单的负载均衡和容错;
FastCGI,简单的负载均衡和容错;
模块化的结构。包括 gzipping, byte ranges, chunked responses,以及 SSI-filter 等 filter。如果由 Fast CGI 或其它代理服务器处理单页中存在的多个 SSI,则这项处理可以并行运行,而不需要相互等待;
支持 SSL 和 TLSSNI。
nginx优点
轻量、高性能、并发能力强。用来部署静态页面也是相当便捷。
动静分离的好处
当我们访问一些系统的时候,往往是页面发起一个请求,这个请求指定到我们的项目,然后由项目去根据request进行路径的路由寻址。但是系统有时候会有很多的静态资源需要访问,如果都通过项目去路由寻址有几点坏处:
1.静态资源堆积,增加了项目包大小;
2.造成大量线程开销。
etc
所以,通用的解决办法是把静态资源单独放置,使用nginx做代理,这样就可以直接对静态资源进行访问而不需要通过系统,大大的减少了系统的负载。
那有没有坏处?有。
1.任何人都可以根据资源路径进行访问,容易受到恶意攻击;
2.容易造成静态资源泄露。
linux上准备nginx环境
具体的准备nginx环境这里不再重复说了,可以参考链接 :
https://www.cnblogs.com/zhoading/p/8514050.html
准备静态资源
将静态资源长传至服务器,博主是将一个静态页面及静态页面所需要用的js以及css和图片,上传到了nginx的安装目录下 路径为/usr/local/nginx/template,然后就可以配置nginx.conf文件了。
上传后静态资源目录树如下所示:
[root@zhrb template]# tree ka
ka
├── css
│ ├── index.css
│ └── reset.css
├── images
│ ├── 1.png
│ ├── 2.png
│ ├── 3.png
│ ├── 4.png
│ ├── background.png
│ ├── banner.png
│ ├── w-1-1.png
│ ├── w-1-2.png
│ ├── w-2-1.png
│ ├── w-2-2.png
│ └── w.png
├── index.html
└── js
3 directories, 14 files
配置nginx
最简单的配置
server {
listen 80 ;# 监听本机所有 ip 上的 80 端口
server_name _ ;# 域名:www.example.com 这里 "_" 代表获取匹配所有
root /usr/local/nginx/template;# 站点根目录
index index.html;
}
其他类型配置1
server {
listen 80; # 监听本机所有 ip 上的 80 端口
server_name _; # 域名:www.example.com 这里 "_" 代表获取匹配所有
#server_name temp.zhangruibin.com www.temp.zhangruibin.com;在域名解析处增加一个二级子域名解析,可以使用域名直接访问静态资源,效果如下图所示;
root /usr/local/nginx/template; # 站点根目录
location =/temp { # 可有多个 location 用于配置路由地址
try_files index.html =404;
}
}
这里的 root 字段最好写在 location 字段的外边,防止出现无法加载 css、js 的情况。因为 css、js 的加载并不是自动的,nginx 无法执行,需要额外的配置来返回资源。
此时直接访问服务器IP就可以访问到静态页面了。
其他类型配置2
server {
listen 80;#端口号
server_name localhost;#本机
charset utf-8;
#access_log logs/host.access.log main;
location ~ .*\.(gif|jpg|jpeg|png)$ {
expires 24h;
root /usr/local/nginx/template/images/;#指定图片存放路径
access_log /usr/local/images.log;#日志存放路径
proxy_store on;
proxy_store_access user:rw group:rw all:rw;
proxy_temp_path /local/images/;#图片访问路径
proxy_redirect off;
proxy_set_header Host 127.0.0.1;
client_max_body_size 10m;
client_body_buffer_size 1280k;
proxy_connect_timeout 900;
proxy_send_timeout 900;
proxy_read_timeout 900;
proxy_buffer_size 40k;
proxy_buffers 40 320k;
proxy_busy_buffers_size 640k;
proxy_temp_file_write_size 640k;
if ( !-e $request_filename)
{
proxy_pass http://127.0.0.1;#默认80端口
}
}
location / {
root /usr/local/nginx/template; #html访问路径
index index.html ; #html文件名称
}
}
重载nginx配置文件
nginx安装目录下,sbin目录里面执行:
./nginx -s reload
nginx常用命令
1. 启动 Nginx
poechant@ubuntu:sudo ./sbin/nginx
2. 停止 Nginx
poechant@ubuntu:sudo ./sbin/nginx -s stop
poechant@ubuntu:sudo ./sbin/nginx -s quit
-s都是采用向 Nginx 发送信号的方式。
3. Nginx 重载配置
sudo ./sbin/nginx -s reload`
上述是采用向 Nginx 发送信号的方式,或者使用:
service nginx reload
4. 指定配置文件
sudo ./sbin/nginx -c /usr/local/nginx/conf/nginx.conf
-c表示configuration,指定配置文件。
5. 查看 Nginx 版本
有两种可以查看 Nginx 的版本信息的参数。第一种如下:
/usr/local/nginx$ ./sbin/nginx -v
nginx: nginx version: nginx/1.0.0
另一种显示的是详细的版本信息:
poechant@ubuntu:/usr/local/nginx$ ./sbin/nginx -V
nginx: nginx version: nginx/1.0.0 nginx: built by gcc 4.3.3 (Ubuntu 4.3.3-5ubuntu4)
nginx: TLS SNI support enabled
nginx: configure arguments: --with-http_ssl_module --with-openssl=/home/luming/openssl-1.0.0d/
6. 检查配置文件是否正确
/usr/local/nginx$ ./sbin/nginx -t
nginx: [alert] could not open error log file: open() "/usr/local/nginx/logs/error.log" failed (13: Permission denied)
nginx: the configuration file /usr/local/nginx/conf/nginx.conf syntax is ok 2012/01/09 16:45:09 [emerg] 23898#0: open() "/usr/local/nginx/logs/nginx.pid" failed (13: Permission denied)
nginx: configuration file /usr/local/nginx/conf/nginx.conf test failed
如果出现如上的提示信息,表示没有访问错误日志文件和进程,可以sudo(super user do)一下:
poerchant@ubuntu:/usr/local/nginx$ sudo ./sbin/nginx -t
nginx: the configuration file /usr/local/nginx/conf/nginx.conf syntax is ok
nginx: configuration file /usr/local/nginx/conf/nginx.conf test is successful
如果显示如上,则表示配置文件正确。否则,会有相关提示。
7. 显示帮助信息
poechant@ubuntu:/user/local/nginx$ ./sbin/nginx -h
或者:
poechant@ubuntu:/user/local/nginx$ ./sbin/nginx -?
互联网IT面经集锦(腾讯文档):https://docs.qq.com/sheet/DVWpsS2pIU3ZFZUx3