准备工作 首先需要准备一个解析好的一级域名并做好解析,以及对应的SSL证书。
域名购买参考 NameSilo ,域名解析参考 DNSpod ,SSL证书参考 腾讯云SSL
Nginx主配置文件 打开 /etc/nginx/nginx.conf
,主配置文件只负责80端口及其转发443功能。
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 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 user nginx; worker_processes auto; error_log /var/log/nginx/error.log; pid /run/nginx.pid; # Load dynamic modules. See /usr/share/doc/nginx/README.dynamic. include /usr/share/nginx/modules/*.conf; events { worker_connections 1024; } http { log_format main '$remote_addr - $remote_user [$time_local] "$request" ' '$status $body_bytes_sent "$http_referer" ' '"$http_user_agent" "$http_x_forwarded_for"'; access_log /var/log/nginx/access.log main; sendfile on; tcp_nopush on; tcp_nodelay on; keepalive_timeout 65; types_hash_max_size 2048; include /etc/nginx/mime.types; default_type application/octet-stream; # Load modular configuration files from the /etc/nginx/conf.d directory. # See http://nginx.org/en/docs/ngx_core_module.html#include # for more information. include /etc/nginx/conf.d/*.conf; server { listen 80; #带www和不带www的入口 server_name baidu.com www.baidu.com; return 301 https://www.baidu.com$request_uri; location / { root /usr/share/nginx/html; index index.html index.htm; } } server { listen 80; server_name m.baidu.com; return 301 https://m.baidu.com$request_uri; location / { root /usr/share/nginx/html; index index.html index.htm; } } }
其中,server第一块为主域名80端口,可配置不同url对应不同的跳转地址。
以后每个子域名都要在主配置文件里面添加80端口的对应跳转。
一级域名配置 首先是一级域名的Https配置,打开 /etc/nginx/conf.d
文件夹。
此文件夹下所有配置都会自动引入主配置文件的。在这里新建一个 baidu.conf
文件,配置如下。
注意对应的证书文件要改好名并且要放在对应的位置上。
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 33 34 35 36 37 38 39 server { listen 443 ssl; server_name baidu.com; return 301 http://www.baidu.com$request_uri; ssl_certificate /usr/local/cert/crt.crt; ssl_certificate_key /usr/local/cert/key.key; ssl_session_cache shared:SSL:1m; 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 / { root html; index index.html index.htm; } } server { listen 443 ssl; server_name www.baidu.com; ssl_certificate /usr/local/cert/crt.crt; ssl_certificate_key /usr/local/cert/key.key; ssl_session_cache shared:SSL:1m; 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 / { root /usr/share/nginx/html; index index.html index.htm; } }
这里配置两块server是为了把 https://baidu.com
跳转到 https://www.baidu.com
上。
二级域名配置 还是在 /etc/nginx/conf.d
文件夹下,新建 m.baidu.conf
文件,配置如下。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 server { listen 443 ssl; server_name m.baidu.com; ssl_certificate /usr/local/cert/mcrt.crt; ssl_certificate_key /usr/local/cert/mkey.key; ssl_session_cache shared:SSL:1m; 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 / { root /usr/share/nginx/m; try_files $uri $uri/ /index.html; } location /api { rewrite ^/api/(.*)$ /$1 break; proxy_pass http://127.0.0.1:9305; } }
其中的 try_files
字段是为了适配HTML5的History路由模式。
api
开头的为接口请求,转到9305端口上的后端服务(Java或者Nodejs)
其他二级域名也是单独创建文件,比如 https://tieba.baidu.com
需要创建 tieba.baidu.conf
文件,并且要把证书重命名为 tiebacrt.crt
和 tiebakey.key
,存放位置需统一。然后去主配置文件里面添加80端口的监听跳转443即可。
至此所有Nginx配置项全部配置完成了。