Nginx常用配置,开箱即用
最近在网上开了个店铺,提供付费技术支持。经常接到Nginx安装和配置的单。这里笔者将常用配置统统写在下面,方便咱们日常使用。
这里本着开箱即用的原则,所以大多数时候不会解释为什么要这样去配置,也不涉及Nginx的安装步骤。下面的所有配置,都可以直接复制后粘贴使用,只要改改ip地址或者端口就可以了。
案例一
nginx作为静态文件服务器、图片服务器使用
1 2 3 4 5 6 7 8
| server { listen 80; server_name abc.com; location / { root /home/appadmin/www/images; index index.html; } }
|
案例二
反向代理后端的8080端口到nginx 80 端口
1 2 3 4 5 6 7 8
| server { listen 80; server_name abc.com; location / { proxy_pass http://localhost:8080/; index index.html; } }
|
案例三
反向代理后获取不到客户访问的ip或一些header信息,就用下面的配置
1 2 3 4 5 6 7 8 9 10 11 12 13 14
| server { listen 80; server_name abc.com; location / { proxy_set_header X-Real-IP ; proxy_set_header X-Real-PORT ; proxy_set_header host ; proxy_set_header X-Forwarded-Host ; proxy_set_header X-Forwarded-Server ; proxy_set_header X-Forwarded-For ; proxy_pass http://localhost:8080/; index index.html; } }
|
案例四
反向代理,并配置https
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
| 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 ; proxy_set_header X-Real-PORT ; proxy_set_header host ; proxy_set_header X-Forwarded-Host ; proxy_set_header X-Forwarded-Server ; proxy_set_header X-Forwarded-For ; proxy_pass http://localhost:8080/; } }
|
案例五
将http强制跳转到https,也就是用户访问80端口的时候,自动跳转到443
1 2 3 4 5
| server { listen 80; server_name abc.com; return 301 https://; }
|
案例六
是案例五的另外一种实现方法
1 2 3 4 5 6 7
| server { listen 80; server_name abc.com; location / { rewrite ^(.*)$ https://abc.com permanent; } }
|
案例七
www跳转到不带www的域名上
1 2 3 4 5 6 7
| server { listen 80; server_name abc.com www.abc.com; if ( = 'www.abc.com' ) { rewrite ^/(.*)$ http://abc.com/ permanent; } }
|
案例八
负载均衡。策略有好几种,这里只配置ip_hash
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
| 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为例。
1 2 3 4 5 6 7 8 9 10 11
| 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代理
1 2 3 4 5 6 7
| 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; }
|