完善的域名解析姿势
平时专职搞开发,基本不动服务器的东西,如今自己要搞个网站,就自己摸索了一下Nginx的配置。
场景
我有一台服务器,需要搭建两个网站并解析域名,都使用80端口,而且在加上https。
那么这种情况下,nginx应该如何配置呢?
具体配置文件
网站A
default.conf
1 2 3 4 5 6 7 8 9 10 11 12
| server { listen 8080; server_name localhost;
access_log /var/log/nginx/host.access.log main; error_log /var/log/nginx/host.error.log error;
location / { root /usr/share/nginx/html; index index.html index.htm; } }
|
我只放出了关键配置,说明问题即可。网站B其实和这个也是一样的,根据需求配置即可,并选择另外一个端口号,如8081。
反向代理nginx配置
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
| server { listen 443 ssl http2; server_name www.your-domain-name.com; #charset utf-8; access_log /var/log/nginx/your-domain-name.com/access.log main; error_log /var/log/nginx/your-domain-name.com/error.log error;
ssl_certificate conf.d/1_www.your-domain-name.com_bundle.crt; ssl_certificate_key conf.d/2_www.your-domain-name.com.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_http_version 1.1; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $remote_addr; proxy_set_header Host $http_host; proxy_set_header Connection ""; #proxy_http_version 2.0;
proxy_pass http://official_site:8080; } } server { listen 443 ssl http2; server_name your-domain-name.com; #ssl_certificate conf.d/1_your-domain-name.com_bundle.crt; #ssl_certificate_key conf.d/2_your-domain-name.com.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; rewrite ^(.*) https://www.your-domain-name.com$1 permanent; } server { listen 80 http2; server_name www.your-domain-name.com your-domain-name.com; rewrite ^(.*) https://www.your-domain-name.com$1 permanent; }
|
关键点说明
- 第2行 我配置了http2.0的协议,如果1.1版本的话改成http即可
- 第3行 server_name 就是写你要解析的域名
- 第8和第9行的路径:我的当前配置文件和.crt .key文件是放在同一个文件夹conf.d/下面的,完整路径
/home/reverse_proxy/etc/nginx/conf.d
,仅供参考,具体放哪自行决定。只要配置对了就行,出错记得看nginx的error.log。
- 第14行 开始 到第23行就是要转发到的目标配置了,只说明一下第22行,proxy_pass 就是写具体的网站根url,因为我用的docker取名为official_site所以配置是这样的,如果不用docker的话可以写
http://IP:PORT
- 第25到35行是把二级域名your-domain-name.com的https请求301跳转到三级域名https://www.your-domain-name.com
- 第36行到40行是把二级域名和三级域名的http请求都永久跳转到https://www.your-domain-name.com
配置形成的效果
- 网站就只能通过https来访问
- 二级域名和三级域名都解析,迎合了不同的用户输入域名的习惯
- 把二级域名301跳转到三级域名,这样对SEO友好。
- 有新域名需要解析到这台服务器的话,照葫芦画瓢配置响应的server就行。
以上就是自建网站配置nginx需要注意的小技巧,初期嘛,低成本运作就行。