Nginx
- 修改nginx配置文件之后,用reload或者restart重载配置文件生效
- 如果配置文件没有重载成功,会给你提示,你在日志中就可以看到启动失败的原因,然后排查
- 通过lsof -i:prot 可以看出nginx是否监视成功,如果监视成功,但是在网页看不到,说明没有开放端口
配置文件
全局配置
worker_processes 1;值越大,其并发能力越强,但是会受到硬件的影响
events{
worker_connections 1000;#用户最大链接数
}
这部分配置与用户网络的关系比较大
http 核心配置
http{
#http全局配置
server{
listen 80;#监听端口,配置后可以通过 lsof -i:80 查看
server_name localhost;#定义网站域名 多个用空格分开 没有域名用localhost或其等效替代
#access_log logs/ main; #访问日志
location / {
root /home/www/myweb;#网站根目录
index ;#首页,默认是index
}
error_page 404 /;#自定义404
#location ~ \.php$ {
# root html;
# fastcgi_pass 127.0.0.1:9000; //php-fpm 配置的地址,通过lsof -i:9000查看
# fastcgi_index ;
# fastcgi_param SCRIPT_FILENAME /scripts$fastcgi_script_name;
# include fastcgi_params;
#}
# HTTPS 相关配置
#
#server {
# listen 443 ssl; //监听443端口,即ssl
# server_name localhost;
### 以下为ssl相关配置
# ssl_certificate ;//指定pem文件路径
# ssl_certificate_key ;//指定key文件路径
# ssl_session_cache shared:SSL:1m;//指定session cache大小
# ssl_session_timeout 5m;//指定session超时时间
# ssl_protocols TLSv1 TLSv1.1 TLSv1.2;//指定ssl协议
# ssl_ciphers HIGH:!aNULL:!MD5;//指定ssl算法
# ssl_prefer_server_ciphers on;//优先采取服务器算法
# location / {
# root html;//网站根目录
# index ;
# }
#}
}
}
#静态资源配置
location ~ .*\.(js|css)?$
{
expires 12h;
}
location ~ .*\.(gif|jpg|jpeg|png|bmp|swf)$
{
expires 30d;
}
如果在listen 80;那一层指定了root 那么就不需要在location 中指定
单独解析静态文件有一个好处就是,这些静态文件一般是不变的,如果用户再次访问的时候,他会直接重定向,让用户直接拿浏览器的数据,不但减少了流量,而且增加了服务器的抗压能力。
然后就是关于 expires 过期时间的问题,我们不用担心我们更新服务器后,静态资源还按照以前的加载,nginx会自动比对文件的日期,如果发现你更新了,他会重新下载
proxy_pass http://127.0.0.1:8080;路由转发
- 注意
- 前面是有http://不是单单只有端口号
对location的理解和配置
-
理解
- 当我们对监听的端口和域名发起指定请求之后,nginx就会帮助我们找到这个server
- 但是,我们发送的请求不只有ip和端口,我们还有其他附加的url,所有location帮助我们在这里处理了这些请求
-
配置
- ~ + 一个正则表达式
负载均衡
upstream myserver{#myserver是自己起的名字,注意这个是和server是同级目录
server ip:port1;
server ip:port2;#参与均衡的两个端口
}
server{
listen 80;
server_name ip;
location / {
proxy_pass http://myserver;#你刚刚起的服务名
}
}
- 因为是负载均衡,所以我们必然要提供一个和均衡端口不一样的端口,所以要结合server才能实现