IP捆绑域名

访问域名,打开指定的静态html页面
前提:先把域名解析到ip下,才能捆绑使用
server_name :这里配置自己的域名

没有使用域名的配置:

1
2
3
4
5
6
7
8
server {
listen 80;
server_name localhost;
location / {
root html;
index index.html index.htm;
}
}

使用域名的配置

1
2
3
4
5
6
7
8
server {
listen 80;
server_name blog.renyuxin.cn;
location / {
root html;
index index.html index.htm;
}
}

代理转发1

使用二级域名,访问服务器文件夹。域名 + /静态资源相对路径

1
2
3
4
5
server{
listen 80;
server_name file.renyuxin.cn;
root /usr/local/nginx/html/files;
}

代理转发2

ip直接访问服务器上的index,html

1
2
3
4
5
6
7
8
server{
listen 80;
server_name 127.0.0.1;
location ~^/ {
root html;
index index.html index.htm;
}
}

代理转发3

同一台服务器下,使用不同域名,通过不同端口,访问不同的项目

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
server{
listen 80;
server_name blog.renyuxin.cn;
location ~^/ {
proxy_pass http://127.0.0.1:8001;
}

location /soulsoup/ {
proxy_pass http://127.0.0.1:8001/soulsoup;
}

}

server{
listen 80;
server_name blog2.renyuxin.cn;
location ~^/ {
proxy_pass http://127.0.0.1:8002;
}

location /soulsoup/ {
proxy_pass http://127.0.0.1:8002/soulsoup;
}

}

代理转发4

同一台服务器下,使用不同域名,访问不同文件夹下的默认html页面
注意,root:对应的文件夹路径,是服务器中的绝对路径,不是以/ngixn/html文件夹的相对路径。
并且 index:输入域名,默认跳转的页面

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
server{
listen 80;
server_name aaa.renyuxin.cn;
location / {
root /demo/one;
index index.html;
}
}

server{
listen 80;
server_name bbb.renyuxin.cn;
location / {
root /demo/two;
index index.html;
}
}

Stream端口转发

大陆域名转发到海外服务器的操作,常用于:
当本地直接ping海外出现丢包甚至超时的时候,大陆服务器当跳板,转海外服务器

listen:后面填写源端口(也就是当前服务器端口),默认协议为TCP,可以指定为UDP协议
proxy_connect_timeout:连接超时时间
proxy_timeout:超时时间
proxy_pass:填写转发目标的IP及端口号

注意:Ngixn可以将IPV4的数据包转发到IPV6IPV6IP需要使用[]括起来。

参考【官方文档

源码

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
stream {
upstream backend {
hash $remote_addr consistent;

server backend1.example.com:12345 weight=5;
server 127.0.0.1:12345 max_fails=3 fail_timeout=30s;
server unix:/tmp/backend3;
}

upstream dns {
server 192.168.0.1:53535;
server dns.example.com:53;
}

server {
listen 12345;
proxy_connect_timeout 1s;
proxy_timeout 3s;
proxy_pass backend;
}

server {
listen 127.0.0.1:53 udp reuseport;
proxy_timeout 20s;
proxy_pass dns;
}

server {
listen [::1]:12345;
proxy_pass unix:/tmp/stream.socket;
}
}

案例实例

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
stream {
#将12345端口转发到192.168.1.23的3306端口
server {
listen 12345;
proxy_connect_timeout 5s;
proxy_timeout 20s;
proxy_pass 192.168.1.23:3306;
}
#将udp 53端口转发到192.168.1.23 53端口
server {
listen 53 udp reuseport;
proxy_timeout 20s;
proxy_pass 192.168.1.23:53;
}
#ipv4转发到ipv6
server {
listen 9135;
proxy_connect_timeout 10s;
proxy_timeout 30s;
proxy_pass [2607:fcd0:107:3cc::1]:9135;
}
}

域名访问,路由转发

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
server{
listen 80;
server_name blog.renyuxin.cn;

location / {
root /demo/dist;
index index.html;
try_files $uri $uri/ /index.html;
}
# prod-api路由
location /prod-api/{
proxy_set_header Host $http_host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header REMOTE-HOST $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_pass http://127.0.0.1:8001/;
}

}

综合问题

nginx启动成功,jpg、png等静态资源可以正常访问,但是svg格式不能访问

1
2
3
4
5
6
7
8
server{
listen 80;
server_name file.renyuxin.cn;
location ~* ^.+\.(jpg|jpeg|gif|png|ico|css|js|pdf|txt|svg){
root /usr/local/nginx/html/file;
add_header Access-Control-Allow-Origin *;
}
}