Skip to content

Nginx 常见配置

四层代理

四层代理主要工作于OSI模型中的传输层,传输层主要处理消息的传递,而不管消息的内容。TCP就是常见的四层协议。 四层代理主要用于端口转发等。

带有负载的端口转发配置

下面例子是一个带有负载的443和80端口转发

events {}

stream {
  upstream k3s_ssl {
    server 10.108.132.61:443;
    server 10.108.132.62:443;
  }
  upstream k3s_http {
    server 10.108.132.61:80;
    server 10.108.132.62:80;
  }



  server {
    listen 443;
    proxy_pass k3s_ssl;
  }
  server {
    listen 80;
    proxy_pass k3s_http;
  }

}

七层代理

重定向

可以指定任意路径跳转到指定路径

server {
    listen       80;
    listen  [::]:80;
    client_max_body_size 100m;
    server_name  localhost;

    location / {
        rewrite ^(.*) https://cloud-api-inner.tineco.com/ntlmv2/sso redirect;
    }
}

静态缓存加速

对于某些前端页面,可以使用缓存来加速加载,类似于cdn

proxy_cache_path /tmp/cache levels=1:2 keys_zone=mycache:100m max_size=1g;

server {
    listen       80;
    listen  [::]:80;
    client_max_body_size 100m;
    server_name  localhost;

    #access_log  /var/log/nginx/host.access.log  main;

    location / {
        proxy_ssl_server_name on;
        proxy_ssl_name $host;
        proxy_http_version 1.1;
        keepalive_timeout 0;
        proxy_set_header Host $http_host;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Client-IP $proxy_add_x_forwarded_for;
        proxy_pass https://10.108.113.10;
    }
    # 开启缓存
    location ~ .*\.(eot|ttf|ttc|woff|gif|jpg|jpeg|bmp|png|ico|js|css)$ {
        proxy_ssl_server_name on;
        proxy_ssl_name $host;
        proxy_http_version 1.1;
        keepalive_timeout 0;
        proxy_set_header Host $http_host;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Client-IP $proxy_add_x_forwarded_for;
        proxy_cache mycache;
        proxy_cache_valid 200 302 5m;
        add_header cache $upstream_cache_status;
        proxy_pass https://10.108.113.10;
    }
}

websocket配置

map $http_upgrade $connection_upgrade {
    default upgrade;
    '' close;
}

upstream websocket {
    server localhost:8282; # appserver_ip:ws_port
}

server {
     server_name localhost;
     listen 80;
     location / {
         proxy_pass http://websocket;
         proxy_read_timeout 300s;
         proxy_send_timeout 300s;

         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_http_version 1.1;
         proxy_set_header Upgrade $http_upgrade;
         proxy_set_header Connection $connection_upgrade;
     }
}