Nginx常用配置,开箱即用

Nginx常用配置,开箱即用

最近在网上开了个店铺,提供付费技术支持。经常接到Nginx安装和配置的单。这里笔者将常用配置统统写在下面,方便咱们日常使用。

这里本着开箱即用的原则,所以大多数时候不会解释为什么要这样去配置,也不涉及Nginx的安装步骤。下面的所有配置,都可以直接复制后粘贴使用,只要改改ip地址或者端口就可以了。

案例一

nginx作为静态文件服务器、图片服务器使用

server {
    listen 80;
    server_name abc.com;
    location / {
        root /home/appadmin/www/images;
        index index.html;
    }
} 

案例二

反向代理后端的8080端口到nginx 80 端口

 server {
    listen 80;
    server_name abc.com;
    location / {
        proxy_pass http://localhost:8080/;
        index index.html;
    }
}

案例三

反向代理后获取不到客户访问的ip或一些header信息,就用下面的配置

server {
    listen 80;
    server_name abc.com;
    location / {
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Real-PORT $remote_port;
        proxy_set_header host $host;
        proxy_set_header X-Forwarded-Host $host;
        proxy_set_header X-Forwarded-Server $host;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_pass http://localhost:8080/;
        index index.html;
    }
}

案例四

反向代理,并配置https

server {
    listen 443 ssl;
    server_name abc.com;
    ssl_certificate /ssl/abc.pem; # 这里可以是pem或者crt文件
    ssl_certificate_key /ssl/abc.key;
    ssl_session_timeout 5m;
    ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
    ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:HIGH:!aNULL:!MD5:!RC4:!DHE;
    ssl_prefer_server_ciphers on;
    location / {
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Real-PORT $remote_port;
        proxy_set_header host $host;
        proxy_set_header X-Forwarded-Host $host;
        proxy_set_header X-Forwarded-Server $host;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_pass http://localhost:8080/;
    }
}

案例五

将http强制跳转到https,也就是用户访问80端口的时候,自动跳转到443

server {
  listen 80;
  server_name abc.com;
  return 301 https://$host$request_uri;
}

案例六

是案例五的另外一种实现方法

server {
  listen 80;
  server_name abc.com;
  location / {
    rewrite ^(.*)$ https://abc.com$1 permanent;
  }
}

案例七

www跳转到不带www的域名上

server {
    listen 80;
    server_name abc.com www.abc.com;
    if ( $host = 'www.abc.com' ) {
            rewrite ^/(.*)$ http://abc.com/$1 permanent;
    }
}

案例八

负载均衡。策略有好几种,这里只配置ip_hash

http {
   upstream my-server {
        ip_hash; 
        server    localhost:8080 weight=1;
        server    localhost:8081 weight=2;
    }

   server {
       listen       80;
       server_name  localhost;

       location / {
            proxy_pass http://my-server;
            proxy_redirect default;
       }
    }
}

案例九

TCP反向代理。Nginx默认是不支持TCP代理的,要支持TCP代理,在安装Nginx的时候要开启 stream模块。就是在编译的时候添加--with-stream参数。

以代理本机的SSH为例。

stream {
    upstream backend {
        server 127.0.0.1:22;
    }
    server {
        listen 2222;
        proxy_connect_timeout 1s;
        proxy_timeout 1h;
        proxy_pass backend;
    }
}

需要留一个一个参数proxy_timeout,这个是代理超时的意思,建议设置大一点,当你设置为几秒的时候,你连接上去很快就会掉线。

案例十

websocket代理

location /ws {
    proxy_pass http://localhost:8080/websocket;
    proxy_http_version 1.1;
    proxy_set_header Upgrade $$http_upgrade; # 必须参数
    proxy_set_header Connection "Upgrade"; # 必须参数
    proxy_set_header X-Real-IP $$remote_addr;
}

本博客采用 知识共享署名-禁止演绎 4.0 国际许可协议 进行许可

本文标题:Nginx常用配置,开箱即用

本文地址:https://jizhong.plus/post/2021/09/nginx-conf.html