是一个高性能的HTTP 和反向代理服务器,特点是占有内存少,并发能力强
配置文件内容
http全局块:http 全局块配置的指令包括文件引入、MIME-TYPE 定义、日志自定义、连接超时时间、单链接请求数上限等
server块:这块和虚拟主机有密切关系,虚拟主机从用户角度看,和一台独立的硬件主机是完全一样的,该技术的产生是为了
节省互联网服务器硬件成本。
每个 http 块可以包括多个 server 块,而每个 server 块就相当于一个虚拟主机。
而每个 server 块也分为全局 server 块,以及可以同时包含多个 locaton 块
include vhost/*.conf;
1、全局 server 块
最常见的配置是本虚拟机主机的监听配置和本虚拟主机的名称或 IP 配置。
2、location 块
一个 server 块可以配置多个 location 块。
这块的主要作用是基于 Nginx 服务器接收到的请求字符串(例如 server_name/uri-string),对虚拟主机名称
(也可以是 IP 别名)之外的字符串(例如 前面的 /uri-string)进行匹配,对特定的请求进行处理。地址定向、数据缓
存和应答控制等功能,还有许多第三方模块的配置也在这里进行
server {
listen 8080;
server_name localhost;
client_max_body_size 1024M;
location / {
proxy_pass
注:localhost可替换成实际ip
2. 方式2 效果:根据访问的路径跳转到不同端口的服务中
server {
listen 8081;
server_name localhost;
client_max_body_size 1024M;
location ~ /test1/ {
proxy_pass http://localhost:8088;
}
location ~ /test2/ {
proxy_pass http://localhost:8082;
}
}
效果:访问nginx 8083代理地址 随机访问到两台主机8088地址
在http全局块中
http {
upstream myserver{
server 192.168.6.40:8088 weight=10;
server 192.168.6.162:8088 weight=10;
}
server {
listen 8083;
server_name localhost;
client_max_body_size 1024M;
location / {
proxy_pass http://myserver>;
}
}
轮询(默认)
每个请求按时间顺序逐一分配到不同的后端服务器,如果后端服务器 down 掉,能自动剔除。
weight
weight 代表权,重默认为 1,权重越高被分配的客户端越多
指定轮询几率,weight 和访问比率成正比,用于后端服务器性能不均的情况。 例如:
upstream myserver{
server 192.168.6.40:8088 weight=10;
server 192.168.6.162:8088 weight=10;
}
ip_hash
每个请求按访问 ip 的 hash 结果分配,这样每个访客固定访问一个后端服务器,可以解决 session 的问题。 例如:
upstream myserver{
ip_hash
server 192.168.6.40:8088;
server 192.168.6.162:8088;
}
upstream myserver{
server 192.168.6.40:8088;
server 192.168.6.162:8088;
fair;
}
将动态请求和静态请求分开,nginx处理静态页面,tomcat处理动态页面 通过 location 指定不同的后缀名实现不同的请求转发。通过 expires 参数设置,可以使
浏览器缓存过期时间,减少与服务器之前的请求和流量
server {
listen 8080;
server_name localhost;
client_max_body_size 1024M;
location / {
root D:\htmlTest;
index index.html index.htm;
}
location /api/ {
proxy\_pass http://localhost:8088;
}
}
server {
listen 80;
server_name localhost;
client_max_body_size 1024M;
location / {
#root html;
proxy_pass http://localhost:8088; #websocket地址
#index index.html index.htm;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade; #方式
proxy_set_header Connection "upgrade"; #方式
proxy_read_timeout 3600s;
}
}
Keepalived+Nginx 主从模式
Keepalived+Nginx 双主模式
/var/log/nginx
try_files $uri $uri/ /index.html;
同源指 域名、协议、端口均相同
前后端分离项目,无论是否部署在同一台机器上,都应尽量使前后端项目暴露于同一域下【协议+主机+端口都相同】,方法就是在部署前端得Nginx上,使用同一个域来反向代理后端项目
server {
# 0.与浏览器交互的只有这个Nginx虚拟服务器,浏览器看到的【协议+主机+端口】永远只有一个,整个交互过程始终处于同一域下,故不会出现跨域问题
listen 80;
server_name localhost;;
# 1.前端项目打包好的dist目录,放置到这个目录下
root /data/;
# 2.后端多个微服务接口通过统一网关(9000)对外暴露,nginx反向代理统一网官
# 3.【code|auth|admin|buy】是后端各微服务接口前缀,网关按这个前缀来路由请求。
location ~* ^/(code|auth|admin|buy) {
proxy_pass http://127.0.0.1:9000;
#proxy_set_header Host $http_host;
proxy_connect_timeout 15s;
proxy_send_timeout 15s;
proxy_read_timeout 15s;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
}
server {
listen 8087;
server_name localhost;
#charset koi8-r;
#access_log logs/host.access.log main;
location / {
root /usr/local/package/front/ps_report;
try_files $uri $uri/ /index.html;
}
location /api/ {
proxy_pass http://172.16.85.52:8082;
}
location /wx/ {
proxy_pass http://172.16.85.52:8082;
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
}
listen 443 ssl;
ssl_certificate /home/httpscerts/cmfullchaincert.cer;
ssl_certificate_key /home/httpscerts/cmkey.key;
server_name tmp5.raisetech.cn;