在云主机上用nginx跑几个虚拟主机运行几个不同的网站是很常见的事。下面仅是常用步骤的一个备忘记录,尤其免密码sudo的设置在生成环境中是绝对不推荐的。
1) 免密登录服务区。
制作密钥。在本地生成私钥、公钥(比如 server_name.rsa server_name.rsa.pub)。
代码语言:javascript复制cd ~/.ssh
ssh-keygen -t rsa
把公钥 copy 到服务器。
代码语言:javascript复制ssh-copy-id -i server_name.rsa.pub userId@server_ip
可以打开 server 上的 userId_HOME/.ssh/authorized_keys 查看公钥是否添加成功。
修改本地~/.ssh/config 文件,添加以下内容。
代码语言:javascript复制Host Server_IP
HostName Server_Name
IdentityFile YOUR_PRIVATE_KEY_FILE_PATH
2)免密 sudo
visudo 加入类似这样的一句,注意应该放在组的设置之后。
代码语言:javascript复制USER_ID ALL=(ALL) NOPASSWD: ALL
3) nginx 虚拟主机设置。
nginx 虚拟主机可以通过 IP、域名、端口这三种方式进行设置。购买了一台阿里云主机,有多个域名,通过域名进行设置就好。
安装 nginx,设置不同域名的虚拟主机。
编辑 /etc/nginx/nginx.conf, 在 http 部分 include 对虚拟主机定义。
代码语言:javascript复制include /etc/nginx/conf.d/*.conf;
include /etc/nginx/sites-enabled/telbox;
include /etc/nginx/sites-enabled/linkedall;
linkedall 文件内容如下(静态 web):
代码语言:javascript复制server {
listen 80;
root /home/devop/linkedall/web;index index.html index.htm;
server_name www.linkedall.netlinkedall.net *.linkedall.net;
location / {
try_files $uri $uri/ =404;
}
location ~* .(html)$ {
access_log off;
add_header Cache-Control max-age=no-cache;
}
location ~* .(css|js|png|jpg|jpeg|gif|gz|svg|mp4|ogg|ogv|webm|htc|xml|woff)$ {
access_log off;
add_header Cache-Control max-age=360000;
}
telbox 虚拟主机定义如下(作为 proxy 转向后端的运行在 8080 端口的服务):
代码语言:javascript复制server {
listen 80 default_server;
listen [::]:80 default_server ipv6only=on;
root /usr/share/nginx/html;
index index.html index.htm;
server_name www.telbox.cn;
location / {
proxy_pass http://localhost:8080;
}
Reference:
https://juejin.im/post/6844903604034240525