Linux下Nginx的HTTPS+多站点 虚拟主机配置
阿里云产品通用代金券,最高可领1888元代金券分享一波阿里云红包. 阿里云的购买入口
对于访问量不大的服务器,只运行一个网站会不会觉得有点白费资源,或者者说有多个网站要部署,但是只有一台服务器,能不能在一台主机上运行多个网站呢。当然是可以的,可以使用不同的目录区分不同的网站,这种方法好处是比较简单,但是会造成网站文件混乱,在使用框架时可能会产生冲突,使用虚拟主机可以方便的处理这个问题。
准备
- 一个已经备案的域名
- 一台有Nginx的服务器
- ssl证书(不开启HTTPS可以忽略)
增加子域名。比方你注册的域名是qiandu.com,可以自定义多个二级子域名比方m.qiandu.com,api.qiandu.com等等。以阿里云解析为例
记录值选择A,主机记录直接填写二级域名就行,比方二级域名是m.qiandu.com,只需填写m就行。记录值就是服务器ip了,而后确定即可以了。增加了域名后,可以去下载一个免费的ssl证书。配置ssl证书。(不适用HTTPS可以跳过)把从阿里云下载的证书放到服务器上,一边都放在Nginx配置文件的目录中,比方
/etc/nginx
,在这个目录中新建一个目录,比方ssl
,而后把证书放到这里。注意,肯定要有可读权限配置Nginx。根据自己的具体情况,进入Nginx的配置文件目录,一般是
/etc/nginx
。一般会有一个conf.d
目录或者者vhost
目录,什么名无所谓,只需是没有被占用的就行,而后编辑nginx.conf
,在http
节点中增加include /etc/nginx/conf.d/*.conf;
在conf.d目录中增加一个配置文件,为了方便区分,一般都以域名作为文件名,比方域名为m.qiandu.com,新建m.qiandu.com.conf
。而后增加配置信息
server{ listen 80; server_name m.qiandu.com; index index.html index.htm index.php default.html default.htm default.php; root /home/www/m.qiandu.com; include php.conf; include rewrite/thinkphp.conf; location ~ .*\.(gif|jpg|jpeg|png|bmp|swf)$ { expires 30d; } location ~ .*\.(js|css)?$ { expires 12h; } location ~ /.well-known { allow all; } location ~ /\. { deny all; } access_log off;}server{ listen 443 ssl http2;#listen [::]:443 ssl http2; server_name m.qiandu.com; index index.html index.htm index.php default.html default.htm default.php; root /home/www/m.qiandu.com; ssl on; ssl_certificate /etc/nginx/ssl/m.qiandu.com.pem; ssl_certificate_key /etc/nginx/ssl/m.qiandu.com.key; ssl_session_timeout 5m; ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4; ssl_protocols TLSv1 TLSv1.1 TLSv1.2; ssl_prefer_server_ciphers on; include php.conf; include rewrite/thinkphp.conf; location ~ .*\.(gif|jpg|jpeg|png|bmp|swf)$ { expires 30d; } location ~ .*\.(js|css)?$ { expires 12h; } location ~ /.well-known { allow all; } location ~ /\. { deny all; } access_log off;}
第一个server是HTTP的配置,第二个是HTTPS的配置。server_name m.qiandu.com;
是匹配的域名,只有当域名是m.qiandu.com 访问时,才会响应.root /home/www/m.qiandu.com;
是网站文件的的目录,注意,Nginx对这个目录有读写权限
include是引入别的配置信息,我用的php,就引入了php的配置信息,还有重写配置。这个根据需要选择配置
php.conf
location ~ \.php$ { fastcgi_pass 127.0.0.1:9000; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; include fastcgi_params;}
有少量location
是针对静态文件的访问控制。
配置完,保存。service nginx restart
重启服务器,访问以下试试
总结
以上是Nginx虚拟主机的配置方法,只需你服务器能负载,可以配置多个站点,方法一样,增加配置文件就行
其实所有的配置文件都可以写在nginx.conf文件中,但是为了方便阅读和修改,一般都是写在多个文件中,通过include引入
1. 本站所有资源来源于用户上传和网络,如有侵权请邮件联系站长!
2. 分享目的仅供大家学习和交流,您必须在下载后24小时内删除!
3. 不得使用于非法商业用途,不得违反国家法律。否则后果自负!
4. 本站提供的源码、模板、插件等等其他资源,都不包含技术服务请大家谅解!
5. 如有链接无法下载、失效或广告,请联系管理员处理!
6. 本站资源售价只是摆设,本站源码仅提供给会员学习使用!
7. 如遇到加密压缩包,请使用360解压,如遇到无法解压的请联系管理员
开心源码网 » Linux下Nginx的HTTPS+多站点 虚拟主机配置