Nginx配置介绍
【摘要】 前面说了openresty的安装,它是基于Ngnix的,下面来看一下Nginx的配置。先用 nginx -V 看一下编译配置:nginx version: openresty/1.15.8.1built by gcc 8.5.0 20210514 (Red Hat 8.5.0-13) (GCC)built with OpenSSL 1.1.1k FIPS 25 Mar 2021TLS SN...
前面说了openresty的安装,它是基于Ngnix的,下面来看一下Nginx的配置。
先用 nginx -V 看一下编译配置:
nginx version: openresty/1.15.8.1
built by gcc 8.5.0 20210514 (Red Hat 8.5.0-13) (GCC)
built with OpenSSL 1.1.1k FIPS 25 Mar 2021
TLS SNI support enabled
configure arguments:
--prefix=/data/thirdtool/openresty/nginx
--with-cc-opt=-O2
--add-module=../ngx_devel_kit-0.3.1rc1
--add-module=../echo-nginx-module-0.61
--add-module=../xss-nginx-module-0.06
--add-module=../ngx_coolkit-0.2
--add-module=../set-misc-nginx-module-0.32
--add-module=../form-input-nginx-module-0.12
--add-module=../encrypted-session-nginx-module-0.08
--add-module=../srcache-nginx-module-0.31
--add-module=../ngx_lua-0.10.15
--add-module=../ngx_lua_upstream-0.07
--add-module=../headers-more-nginx-module-0.33
--add-module=../array-var-nginx-module-0.05
--add-module=../memc-nginx-module-0.19
--add-module=../redis2-nginx-module-0.15
--add-module=../redis-nginx-module-0.3.7
--add-module=../rds-json-nginx-module-0.15
--add-module=../rds-csv-nginx-module-0.09
--add-module=../ngx_stream_lua-0.0.7
--with-ld-opt=-Wl,-rpath,/data/thirdtool/openresty/luajit/lib
--with-stream
--with-stream_ssl_module
--with-stream_ssl_preread_module
--with-http_ssl_module
然后来看一下Nginx的主配置文件nginx.conf,它是可以分为3个部分,CoreModule,EventsModule,HttpCoreModule。
先看CoreModule
user root; #运行用户
worker_processes auto; #运行的work进程数。这里也可以设定一个具体的数值,即按照虚拟CPU的数量来。
再看EventsModule
events {
use epoll; #默认值就是这样:IO复用,事件驱动
worker_connections 65535; #一个worker进程允许的最大连接数
}
再看HttpCoreModule,这部分内容最多
http {
server_tokens off;
client_max_body_size 2g;
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"'; #默认日志格式就如此
sendfile on; #高效传输文件模式
keepalive_timeout 65; #长连接
include vhost/*.conf; #引入配置文件
limit_req_zone $host$uri zone=one:10m rate=40r/s;
}
其中http里面的include的虚拟主机的conf文件,具体内容是:
第一个
server {
listen 223 ssl; #添加了ssl参数
listen [::]:223 ssl;
ssl_certificate /pathto/cert/server.crt;
ssl_certificate_key /pathto/cert/server.key;
ssl_protocols TLSv1.1 TLSv1.2 TLSv1.3;
ssl_session_cache shared:SSL:1m;
ssl_session_timeout 15m;
ssl_ciphers HIGH:!aNULL:!MD5;
ssl_prefer_server_ciphers on;
# gzip
gzip on;
gzip_min_length 200;
gzip_buffers 32 4K;
gzip_http_version 1.0;
gzip_comp_level 6;
gzip_types *;
gzip_vary on;
gzip_disable "MSIE [1-6]\.";
underscores_in_headers on;
client_max_body_size 2g;
if ($scheme = "http") {
return 301 https://$http_host$request_uri;
}
第二个,与第一个类似,
仅仅是listen的端口变成了443,以及location定义的不同。
这里就是使用端口做了虚拟主机,来隔离业务。另外的2个元素可以来做虚拟主机的是:域名、IP地址。
然后看location指令,它是匹配请求的uri,然后定位到不同的处理。
location / { # / 可以匹配任意URI,可以看做吸收其他location不能处理的请求的黑洞
rewrite ^/(.*) $scheme://$http_host/iadmin/$1 permanent;
}
location = /iadmin { # = 表示精确匹配。优先级最高
rewrite ^/(.*) $scheme://$http_host/iadmin/;
}
location ^~ /iadmin { # 显式前缀匹配 (区分大小写) ~* 是不区分大小写
alias /pathto/nginx/conf/www/admin;
index index.html;
absolute_redirect off;
add_header Cache-Control max-age=3600;
}
location /iadmin/api/audit {
proxy_pass http://127.0.0.1:8300/audit;
add_header Cache-Control no-store;
proxy_set_header Host $host;
proxy_set_header Http-Host $http_host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
nginx有反向代理的功能。正向代理是代理客户端,反向代理是代理服务器。在浏览器或者系统里设置的代理服务器,那个是属于正向代理。反向代理的结果图如下:
由Nginx代理的后端服务器(backend),这里叫做upstream,也可以理解为上游的服务器。定义在http部分里
upstream loginserver { # 要取一个名字
server 127.0.0.1:8100;
server 127.0.0.1:8101;
server 127.0.0.1:8102; # 没有指定负载均衡策略,就是round robin 加权轮询
}
然后就可以使用upstream里取的名字,用proxy_pass等指令来把客户端的请求按策略转发给后端服务器
location ^~ /iclient/api/users/auth/ {
proxy_pass http://loginserver/users/auth/; # 指定代理转发
add_header Cache-Control no-store;
proxy_set_header Host $host; #转发使用原始请求的host头部
proxy_set_header Http-Host $http_host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
最后看一下访问日志的样子:
172.11.61.11 - - [01/Sep/2022:01:23:03 +0000] "GET /iadmin/ HTTP/1.1" 200 427 "-" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/104.0.5112.102 Safari/537.36 Edg/104.0.1293.70"
【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱:
cloudbbs@huaweicloud.com
- 点赞
- 收藏
- 关注作者
评论(0)