如何将此 Apache VHost 迁移到 nginx
How to migrate this Apache VHost to nginx
我比较新,想在 nginx 上测试服务,但我正在努力将此 Apache 配置转换为 nginx。
<VirtualHost *:80>
ServerName api.my-site.de
DocumentRoot /var/www/api.my-site.de/current/public
<Directory "/var/www/api.my-site.de/current/public">
AllowOverride FileInfo AuthConfig Limit Options=All,MultiViews Indexes
Options MultiViews Indexes SymLinksIfOwnerMatch IncludesNoExec
Order deny,allow
Require all granted
</Directory>
</VirtualHost>
<VirtualHost *:443>
ServerName api.my-site.de
DocumentRoot /var/www/api.my-site.de/current/public
<Directory "/var/www/api.my-site.de/current/public">
AllowOverride FileInfo AuthConfig Limit Options=All,MultiViews Indexes
Options MultiViews Indexes SymLinksIfOwnerMatch IncludesNoExec
Order deny,allow
</Directory>
SSLEngine on
SSLCertificateFile /etc/ssl/private/wildcard.my-site.de.crt
SSLCertificateKeyFile /etc/ssl/private/wildcard.my-site.de.key
SSLCertificateChainFile /etc/ssl/private/chain.crt
</VirtualHost>
有人可以帮忙吗?由于 nginx 没有像 .htaccess 这样的东西,所以我不确定如何处理所有标签。
当前草稿:
server {
listen 80;
listen [::]:80 ipv6only=on;
listen 443 ssl;
listen [::]:443 ipv6only=on ssl;
server_name api.my-site.de
location / {
root /var/www/api.my-site.de/current/public;
}
ssl_certificate /etc/ssl/private/wildcard.my-site.de.crt;
ssl_certificate_key /etc/ssl/private/wildcard.my-site.de.key;
}
首先,我喜欢在服务器块中分离不同的配置(即使现在是一样的,当你 2 年后回来并需要阅读这篇文章时,你会爱上自己)。
ssl 证书:
Nginx 只读取 1 个 crt 文件,在 ssl_certificate 下,这里你需要将你的链和你的 crt 连接在同一个文件中,更多信息:
https://futurestud.io/tutorials/how-to-configure-nginx-ssl-certifcate-chain
所以我会做的是:
将证书复制到其他地方,以确保安全并且不要触及任何东西。
sudo cp /etc/ssl/private/wildcard.my-site.de.crt /etc/ssl/private/api-mysite-de.pem
并将您的链连接到 "certificate"。
sudo cat /etc/ssl/private/chain.crt > /etc/ssl/private/api-mysite-de.pem
然后你可以设置你的 ssl_certificate 到这个文件让 nginx 工作。
server {
listen 443 ssl;
listen [::]:443 ipv6only=on ssl;
server_name api.my-site.de
ssl_on;
ssl_certificate /etc/ssl/private/api-mysite-de.pem;
ssl_certificate_key /etc/ssl/private/wildcard.my-site.de.key;
access_log /var/log/nginx/ssl-api.my-site.de.access.log;
error_log /var/log/nginx/ssl-api.my-site.de.cat.error.log;
location / {
root /var/www/api.my-site.de/current/public;
}
}
这里是http 80端口配置
将您的 .htaccess 文件保留在 /var/www/api.my-site.de/current/public 中,它应该可以正常工作。
server {
listen 80;
listen [::]:80 ipv6only=on;
server_name api.my-site.de
access_log /var/log/nginx/api.my-site.de.access.log;
error_log /var/log/nginx/api.my-site.de.cat.error.log;
#logs are love, logs are life
location / {
root /var/www/api.my-site.de/current/public;
}
}
如果您需要任何进一步的配置或它在日志中显示任何错误(我在那里配置它们),请推荐,我会尽力处理。
希望我有所帮助。
我比较新,想在 nginx 上测试服务,但我正在努力将此 Apache 配置转换为 nginx。
<VirtualHost *:80>
ServerName api.my-site.de
DocumentRoot /var/www/api.my-site.de/current/public
<Directory "/var/www/api.my-site.de/current/public">
AllowOverride FileInfo AuthConfig Limit Options=All,MultiViews Indexes
Options MultiViews Indexes SymLinksIfOwnerMatch IncludesNoExec
Order deny,allow
Require all granted
</Directory>
</VirtualHost>
<VirtualHost *:443>
ServerName api.my-site.de
DocumentRoot /var/www/api.my-site.de/current/public
<Directory "/var/www/api.my-site.de/current/public">
AllowOverride FileInfo AuthConfig Limit Options=All,MultiViews Indexes
Options MultiViews Indexes SymLinksIfOwnerMatch IncludesNoExec
Order deny,allow
</Directory>
SSLEngine on
SSLCertificateFile /etc/ssl/private/wildcard.my-site.de.crt
SSLCertificateKeyFile /etc/ssl/private/wildcard.my-site.de.key
SSLCertificateChainFile /etc/ssl/private/chain.crt
</VirtualHost>
有人可以帮忙吗?由于 nginx 没有像 .htaccess 这样的东西,所以我不确定如何处理所有标签。
当前草稿:
server {
listen 80;
listen [::]:80 ipv6only=on;
listen 443 ssl;
listen [::]:443 ipv6only=on ssl;
server_name api.my-site.de
location / {
root /var/www/api.my-site.de/current/public;
}
ssl_certificate /etc/ssl/private/wildcard.my-site.de.crt;
ssl_certificate_key /etc/ssl/private/wildcard.my-site.de.key;
}
首先,我喜欢在服务器块中分离不同的配置(即使现在是一样的,当你 2 年后回来并需要阅读这篇文章时,你会爱上自己)。
ssl 证书:
Nginx 只读取 1 个 crt 文件,在 ssl_certificate 下,这里你需要将你的链和你的 crt 连接在同一个文件中,更多信息:
https://futurestud.io/tutorials/how-to-configure-nginx-ssl-certifcate-chain
所以我会做的是:
将证书复制到其他地方,以确保安全并且不要触及任何东西。
sudo cp /etc/ssl/private/wildcard.my-site.de.crt /etc/ssl/private/api-mysite-de.pem
并将您的链连接到 "certificate"。
sudo cat /etc/ssl/private/chain.crt > /etc/ssl/private/api-mysite-de.pem
然后你可以设置你的 ssl_certificate 到这个文件让 nginx 工作。
server {
listen 443 ssl;
listen [::]:443 ipv6only=on ssl;
server_name api.my-site.de
ssl_on;
ssl_certificate /etc/ssl/private/api-mysite-de.pem;
ssl_certificate_key /etc/ssl/private/wildcard.my-site.de.key;
access_log /var/log/nginx/ssl-api.my-site.de.access.log;
error_log /var/log/nginx/ssl-api.my-site.de.cat.error.log;
location / {
root /var/www/api.my-site.de/current/public;
}
}
这里是http 80端口配置
将您的 .htaccess 文件保留在 /var/www/api.my-site.de/current/public 中,它应该可以正常工作。
server {
listen 80;
listen [::]:80 ipv6only=on;
server_name api.my-site.de
access_log /var/log/nginx/api.my-site.de.access.log;
error_log /var/log/nginx/api.my-site.de.cat.error.log;
#logs are love, logs are life
location / {
root /var/www/api.my-site.de/current/public;
}
}
如果您需要任何进一步的配置或它在日志中显示任何错误(我在那里配置它们),请推荐,我会尽力处理。
希望我有所帮助。