1. nginx基本了解:
1. 基本的目录:
/usr/local/nginx (安装目录)
/usr/local/nginx/conf/nginx.conf (主配置文件)
/usr/local/nginx/html (网页目录)
/usr/local/nginx/logs (日志文件)
/usr/local/nginx/sbin/nginx (nginx启动脚本)
2. 基本命令:
注意(使用启动服务前,必须要有nginx用户,设置成/sbin/nologin)
/usr/local/nginx/sbin/nginx (启动服务)
/usr/lcoal/nginx/sbin/nginx -s stop (关闭服务)
/usr/local/nginx/sbin/nginx -s reload (重新加载配置文件)
/usr/local/nginx/sbinnginx -V (查看软件信息)
3. nginx默认使用的端口是80端口
用 ss -antulp | grep nginx 查看
4. 正向代理和反向代理
正向代理简单一点就是说把nginx服务器作为一个代理服务器去访问目标服务器,客户端要访问目标服务器,就需要借助nginx代理服务器去跳转到目标服务器。目标服务器的ip地址对客户端是可见的。
反向代理,客户端是不知道代理的,客户端访问目标服务器,只需将请求发送到nginx反向代理服务器上,反向代理服务器就会根据配置去到目标服务器获取数据,然后返回给客户端,这时,反向代理服务器和目标服务器就可以看作一个服务器,暴露的是代理服务器的地址,隐藏了真实服务器的地址。
反向代理配置操作过程:
1.在/usr/local/nginx/conf/nginx.conf中修改配置文件
.. ..
http {
.. ..
#使用upstream定义后端服务器集群,集群名称任意(如webserver)
#使用server定义集群中的具体服务器和端口
upstream webserver {
server 192.168.99.100:80;
server 192.168.99.200:80;
}
.. ..
server {
listen 80;
server_name localhost;
location / {
#通过proxy_pass将用户的请求转发给webserver集群
proxy_pass http://webserver;
}
}
.. ..
}
重新加载 /usr/local/nginx/sbin/nginx -s reload
用客户端去访问nginx代理服务器,就会轮流访问目标服务器
2. 调度方法
轮寻(默认的)
在/usr/local/nginx/conf/nginx.conf文件下修改配置文件
upstream webserver {
server 192.168.99.100 weight=2;
server 192.168.99.200;
}
3.健康检查:
设置健康检查,max_fails可以设置后台服务器的失败次数,fail_timeout可以设置后台服务器的失败超时时间。
在 /usr/local/nginx/conf/nginx.conf 文件下修改配置文件
upstream webserver {
server 192.168.99.100;
server 192.168.99.200 max_fails=2 fail_timeout=30;
}
每次修改配置文件,都要重新加载nginx服务
4. down :表示当前server暂时不参与负载
upstream webserver {
server 192.168.99.100 ;
server 192.168.99.200 down;
}
2. lnmp架构访问流程及原理
(个人理解,同时也参考了其它博客)
用户访问网站时,向web服务器发送请求,如果请求的是静态页面,服务器直接返回静态网页资源。
如果请求的是动态页面,由于nginx网站是无法解析动态页面的,php会调用fast-cgi接口,(fast-cgi可以将HTTP服务器和动态脚本语言分开,也可以理解为一种协议)php-fpm这个进程就会产生子进程,由php解释器去解析php代码,将解释后的结果返回给nginx。
1. 配置过程:
默认的模板配置文件/usr/local/nginx/conf/nginx.conf.default
还原配置文件/usr/local/nginx/conf/nginx.conf可以直接把模板文件复制覆盖过来
工具包:gcc(编译工具包) ,pcre-devel(正则表达式依赖包) ,openssl-devel(SSL加密依赖包)
nginx装包:nginx包
数据库的包:mariadb(数据库客户端软件) ,mariadb-server(数据库器软件),mariadb-devel(其他客户端软件的依赖包)
php的包:php(解释器),php-fpm(进程管理器服务),php-mysqlnd(PHP的数据库扩展包)
1.将数据库mariadb,nginx,php-fpm全部启动
2. 使用端口的方连接php-fpm
在/etc/php-fpm.d/www.conf目录下修改配置文件
[www]
listen = 127.0.0.1:9000 #php-fpm端口号(使用网络通信)
;listen = /run/php-fpm/www.sock #注释该行
pm.max_children = 50 #最大进程数量
pm.start_servers = 5 #最小进程数量
重启php-fpm服务进程
或者使用socket方式连接php-fpm
在/etc/php-fpm.d/www.conf目录下修改配置文件
[www]
;listen = 127.0.0.1:9000 #注释或删除该行
listen = /run/php-fpm/www.sock #socket方式(使用进程通信)
listen.acl_users = apache,nginx,nobody #添加nobody账户
重新启动php-fpm服务
3. 修改nginx配置文件(端口连接的方式)
在/usr/local/nginx/conf/nginx.conf目录下修改配置文件
...
location ~ \.php$ { #~是使用正则表达式,匹配以.php结尾
root html;
fastcgi_pass 127.0.0.1:9000; #将请求转发给本机9000端口
fastcgi_index index.php;
#fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi.conf; #加载fastcgi配置文件
}
重现加载nginx服务 /usr/local/nginx/sbin/nginx -s reload
修改nginx配置文件(socket连接的方式)
在/usr/local/nginx/conf/nginx.conf文件内修改配置文件
...
location ~ \.php$ { #~是使用正则表达式,匹配以.php结尾
root html;
#fastcgi_pass 127.0.0.1:9000; #注释或删除该行
fastcgi_pass unix:/run/php-fpm/www.sock; #将请求转发给php-fpm进程
fastcgi_index index.php;
#fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi.conf; #加载fastcgi配置文件
}