nginx配置http及https

nginx配置http及https

现在日常工作中的项目大多数都是采用前后端分离,就用到了nginx进行反向代理、处理静态资源等;因此,记录整理了nginx一些常用的配置;

1.动静分离

将动态请求和静态请求分开处理;通常是将动态请求转发到应用服务器进行处理,静态请求由nginx直接提供;

bash 复制代码
server {
    listen 80;
    location / {
    	#指定静态资源
        root /data/test/test-front/dist/;
        index  index.html index.htm;
        try_files $uri $uri/ /index.html;
    }
    location /prod-api/ {
    	#指定动态请求的处理
        proxy_pass http://127.0.0.1:8000/;
    }
}

2.负载均衡

将客户端请求均匀分配到多个服务器上,提高系统的响应速度及可用性;

bash 复制代码
http {
    upstream backend {
    	#配置负载均衡服务器组
    	#有端口需要把端口带上server www.xxxxx.com:80;
        server www.xxxxx1.com;
        server www.xxxxx2.com;
    }
    server {
        listen 80;
        location / {
            proxy_pass http://backend;
        }
    }
}

提示:可以对负载均衡服务器组里面的节点设置权重、尝试连接主机失败次数、失败次数后下次检查的间隔时间、热备、标记为不可用等;
weight=1:设置服务器权重,默认1,权重值越大,接受的请求比例越大;
max_fails=1:nginx尝试连接失败的次数,超过次数就会将请求转发给其他正常工作的服务器;
fail_timeout=10s:设置尝试连接失败后,下次检查的间隔时间,默认10s;
backup:热备,将服务器作为备用服务器,其他主服务器全部宕机后就会像他转发请求;
down:标记服务器为不可用;
例如:
server www.xxxxx.com weight=1 max_fails=1 fails_timeout=10s;<----#默认配置
server www.xxxxx.com backup;
server www.xxxxx.com down;

3.配置https

bash 复制代码
server {
    listen       443 ssl;
    server_name  www.xxxxx.com;
    
    #指定ssl的crt文件和key文件路径;
    ssl_certificate      /data/test/ssl/xxxxxx.crt;
    ssl_certificate_key  /data/test/ssl/xxxxxx.key;
    
    #设置Nginx的SSL/TLS片段优化加强HTTPS安全性和性能;
    ssl_session_cache    shared:SSL:1m;
    ssl_session_timeout  5m;
    ssl_ciphers  HIGH:!aNULL:!MD5;
    ssl_prefer_server_ciphers  on;
    
    #强制转htttps
    proxy_redirect http:// $scheme://;
    
   #设置请求体、文件大小限制,默认1m;非必选;
    client_max_body_size 50m;
    
location / {
        root   /data/test/test-front/dist/;
        index  index.html index.htm;
        try_files $uri $uri/ /index.html;
}

 location /prod-api/ {
        proxy_set_header Host $http_host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_pass http://127.0.0.1:8000/;
}

4.请求重定向

1.return简单重定向

如:访问www.xxxxx.com时,返回一个301的请求,并重定向到http://www.xxxxx.com:8000,保留其参数;
www.xxxxx.com:源地址;
http://www.xxxxx.com:8000/:目标地址;
?$args:表示保留参数;

bash 复制代码
server {
    listen 80;
    server_name www.xxxxx.com;

    location / {
        return 301 http://www.xxxxx.com:8000/?$args;
    }
}

2.rewrite根据规则进行重定向

如:访问www.xxxxx.com时,进行规则匹配^/(.*),将符合规则的重定到http://www.xxxxx.com:8000,保留其参数;
www.xxxxx.com:源地址;
^/(.*)$:匹配url规则(任何url路径),并将匹配到的内容存储在$1中;
http://www.xxxxx.com:8000/:目标地址;
?$args:表示保留参数;
permanent:表示永久重定向;

bash 复制代码
server {
    listen 80;
    server_name www.xxxxx.com;

    location / {
        rewrite ^/(.*)$ http://www.xxxxx.com:8000/$1?$args permanent;
    }
}

5.常用参数配置介绍

client_max_body_size:#设置请求体、文件大小限制默认1m,如:client_max_body_size 50m;
client_header_timeout:默认值60s,client发送一个请求头的超时时间,如:client_header_timeout 60s;
client_body_timeout:默认值60s,设置请求体的读取超时时间,如:client_header_timeout 60s;
proxy_connect_timeout:默认60s,设置的连接超时时间,如:proxy_connect_timeout 60s;
proxy_read_timeout 600s;:默认60s,设置nginx等待请求响应的时间,如:proxy_read_timeout 60s;
proxy_send_timeout:默认60s,设置发送请求给服务器的超时时间,如:proxy_send_timeout 60s
proxy_set_header Host $http_host;:设置转发请求的请求头host字段为,客户端主机;
proxy_set_header X-Real-IP $remote_addr;:设置转发请求的请求头X-Real-IP字段为,客户端真实ip(准确的说是上一节点的ip);
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;:设置X-Forwarded-For字段,用来记录原始ip地址;
proxy_set_header X-Forwarded-Proto $scheme;:将请求重定向为指定协议,如:https配置中,即是强制转https;

以上参数可以配置在,http、server、location等块中,区别是不同块作用域不同;

相关推荐
冰橙子id2 小时前
centos7编译安装LNMP架构
mysql·nginx·架构·centos·php
栗子叶5 小时前
两种Https正向代理的实现原理
网络协议·http·https·正向代理
玩转4G物联网1 天前
零基础玩转物联网-串口转以太网模块如何快速实现与TCP服务器通信
服务器·网络·物联网·网络协议·tcp/ip·http·fs100p
米粉03051 天前
深入剖析Nginx:从入门到高并发架构实战
java·运维·nginx·架构
hie988941 天前
HTTP常见的请求方法、响应状态码、接口规范介绍
http
一曝十寒1 天前
那些常见的 HTTP 状态码
前端·http
静水楼台x1 天前
nginx日志的一点理解
运维·nginx
欧先生^_^1 天前
ingress-nginx 开启 Prometheus 监控 + Grafana 查看指标
nginx·grafana·prometheus
眠修1 天前
Nginx + Tomcat负载均衡群集
nginx·tomcat·负载均衡
酷爱码1 天前
在 Linux 中修改 Apache HTTP Server(httpd)默认端口的完整指南
linux·http·apache