作为一个稀有的Java妹子,所写的所有博客都只是当作自己的笔记,留下证据自己之前是有用心学习的~哈哈哈哈(如果有不对的地方,也请大家指出,不要悄悄咪咪的不告诉我)
1.nginx的作用
nginx是一个轻量的Web和反向代理服务器,可以实现:
1.服务器静态资源的访问
2.反向代理,通过监听端口/域名将请求转发给指定的服务器
3.负载均衡,通过反向代理使客户端的请求nginx,然后转发给不同的服务器,实现负载均衡。
2.nginx的配置文件
//启动nginx的用户和所属组,默认是nobody,如果在访问时报错是(13: Permission denied),那么可以修改nginx的启动用户,以及更改静态文件的权限
user root admin;
//nginx开启的进程数,建议指定和cpu数量一致
worker_processes auto;
//全局的错误日志存放路径
error_log /www/wwwlogs/nginx_error.log crit;
//指定进程pid存放的位置,保存的就是nginx的进程号
pid /www/server/nginx/logs/nginx.pid;
//指定nginx的工作模式
events
{ //select、poll(前两种是标准的模式)、kqueue、epoll(后两种是高效的)
use epoll;
//定义nginx进程的最大连接数
worker_connections 51200;
multi_accept on;
}
http
{
include mime.types;
#include luawaf.conf;
include proxy.conf;
default_type application/octet-stream;
server_names_hash_bucket_size 512;
client_header_buffer_size 32k;
large_client_header_buffers 4 32k;
client_max_body_size 50m;
sendfile on;
tcp_nopush on;
keepalive_timeout 60;
tcp_nodelay on;
fastcgi_connect_timeout 300;
fastcgi_send_timeout 300;
fastcgi_read_timeout 300;
fastcgi_buffer_size 64k;
fastcgi_buffers 4 64k;
fastcgi_busy_buffers_size 128k;
fastcgi_temp_file_write_size 256k;
fastcgi_intercept_errors on;
gzip on;
gzip_min_length 1k;
gzip_buffers 4 16k;
gzip_http_version 1.1;
gzip_comp_level 2;
gzip_types text/plain application/javascript application/x-javascript text/javascript text/css application/xml;
gzip_vary on;
gzip_proxied expired no-cache no-store private auth;
gzip_disable "MSIE [1-6]\.";
limit_conn_zone $binary_remote_addr zone=perip:10m;
limit_conn_zone $server_name zone=perserver:10m;
server_tokens off;
access_log off;
//核心:虚拟机的配置
server
{
listen 888;
server_name phpmyadmin;
index index.html index.htm index.php;
root /www/server/phpmyadmin;
#error_page 404 /404.html;
include enable-php.conf;
location ~ .*\.(gif|jpg|jpeg|png|bmp|swf)$
{
expires 30d;
}
location ~ .*\.(js|css)?$
{
expires 12h;
}
location ~ /\.
{
deny all;
}
access_log /www/wwwlogs/access.log;
}
//虚拟机的配置可以写在不同的配置文件中,通过include引用,减少主文件的复杂度
include /www/server/panel/vhost/nginx/*.conf;
}
打开其中一个虚拟机配置文件
//负载均衡设置,名字是任意取,在后面的server里直接引用就好了,这里只配置了一个服务,可以设置多个,默认是轮询的机制,可以设置weight,给服务设置不同的权重
upstream gateway {
server 127.0.0.1:8101;
}
//虚拟机的配置
server
{
listen 80;
//监听的域名
server_name dev.groupbuy.xiongmaodangao.com;
//静态页面的文件名
index index.php index.html index.htm default.php default.htm default.html;
//静态页面的访问路径
root /www/wwwroot/dev.groupbuy.xiongmaodangao.com;
#SSL-START SSL相关配置,请勿删除或修改下一行带注释的404规则
#error_page 404/404.html;
#SSL-END
#ERROR-PAGE-START 错误页配置,可以注释、删除或修改
#error_page 404 /404.html;
#error_page 502 /502.html;
#ERROR-PAGE-END
#PHP-INFO-START PHP引用配置,可以注释或修改
include enable-php-00.conf;
#PHP-INFO-END
#REWRITE-END
#禁止访问的文件或目录
#location ~ ^/(\.user.ini|\.htaccess|\.git|\.svn|\.project|LICENSE|README.md)
#{
# return 404;
#}
#location / {
# proxy_read_timeout 180s;
# proxy_pass http://127.0.0.1:8101;
# proxy_set_header host $host;
# proxy_set_header X-Real-IP $remote_addr;
# proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
# proxy_set_header REMOTE-HOST $remote_addr;
#}
//匹配域名后的路径,转发到指定的服务器,支持正则表达式,这里表示匹配
//dev.groupbuy.xiongmaodangao.com/api的请求
location ^~/api {
proxy_set_header Host $host;
proxy_set_header REMOTE-HOST $remote_addr;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_buffering off;
//重定向路径,()就可以使用$来替换,第一个出现的(),就用$1来引用,下面的这个表达式就是指替换^/api/...这一整个部分为...,相当于就是去掉dev.groupbuy.xiongmaodangao.com/api,只保留之后的路径,注意重写不能重写域名和参数
rewrite ^/api/(.*)$ /$1 break;
//这里就是反向代理的服务器的地址,因为之前定义了gateway是127.0.0.1:8101,所以就是把dev.groupbuy.xiongmaodangao.com/api开头的请求替换为请求127.0.0.1:8101。
proxy_pass http://gateway;
}
#一键申请SSL证书验证目录相关设置
#location ~ \.well-known{
# allow all;
#}
#location ~ .*\.(gif|jpg|jpeg|png|bmp|swf)$
#{
# expires 30d;
# error_log off;
# access_log /dev/null;
#}
#location ~ .*\.(js|css)?$
#{
# expires 12h;
# error_log off;
# access_log /dev/null;
#}
access_log /www/wwwlogs/dev.groupbuy.xiongmaodangao.com.log;
//当前这个server错误日志的路径,很有用,因为出问题后基本上靠日志来定位问题
error_log /www/wwwlogs/dev.groupbuy.xiongmaodangao.com.error.log;