如何在localhost上测试nginx子域名

时间:2012-04-10 19:34:26

标签: nginx subdomain

我想在将配置上传到服务器之前测试nginx子域。我可以在localhost上测试吗?我试试

server {
    listen       80;
    server_name  localhost;

    location / {
        proxy_pass http://localhost:8080;
    }
}

server {
    listen       80;
    server_name  sub.localhost;

    location / {
        proxy_pass http://localhost:8080/sub;
    }
}

它不起作用。 Shoulld我改变我的主机文件,以使其工作?此外,在将网站上传到服务器后,我应该更改DNS记录并添加sub.mydomain.com吗?

3 个答案:

答案 0 :(得分:20)

是的,将“127.0.0.1 sub.localhost”添加到您的hosts文件中。那个子必须以某种方式解决。这应该有用。

然后,当您准备好上网时,是的,为子域sub添加a或cname记录。

当我使用proxy_pass时,我还包含来自nginx的proxy.conf。 http://wiki.nginx.org/HttpProxyModule

答案 1 :(得分:5)

对于具有自己域名的公共网络服务器,您只需在DNS配置中使用CNAME记录添加Canonical名称:

CNAME    *    example.com.

完成后,设置你的nginx设置

server_name  *.example.com example.com;

在本地设置中,您可以为nginx保留相同的配置,但除非您具有本地DNS设置,否则您必须编辑/ etc / hosts文件并手动添加每个子域。通配符不能在/ etc / hosts文件中工作。

127.0.0.1  abc.example.com def.example.com ghi.example.com

通常建议使用.local作为本地域的命名空间。

答案 2 :(得分:5)

在基于Linux的操作系统中,只需编辑为public class ProductModel { private int current_page; private ArrayList<DataModel> data = new ArrayList<>(); public int getCurrent_page() { return current_page; } public void setCurrent_page(int current_page) { this.current_page = current_page; } public ArrayList<DataModel> getData() { return data; } public void setData(ArrayList<DataModel> data) { this.data = data; } private class DataModel{ private int id,price,discount,shop_id,vote_id,vedeo_id,status; private String name,image,description,discount_type,discount_exp,created_at,updated_at; public int getId() { return id; } public void setId(int id) { this.id = id; } public int getPrice() { return price; } public void setPrice(int price) { this.price = price; } public int getDiscount() { return discount; } public void setDiscount(int discount) { this.discount = discount; } public int getShop_id() { return shop_id; } public void setShop_id(int shop_id) { this.shop_id = shop_id; } public int getVote_id() { return vote_id; } public void setVote_id(int vote_id) { this.vote_id = vote_id; } public int getVedeo_id() { return vedeo_id; } public void setVedeo_id(int vedeo_id) { this.vedeo_id = vedeo_id; } public int getStatus() { return status; } public void setStatus(int status) { this.status = status; } public String getName() { return name; } public void setName(String name) { this.name = name; } public String getImage() { return image; } public void setImage(String image) { this.image = image; } public String getDescription() { return description; } public void setDescription(String description) { this.description = description; } public String getDiscount_type() { return discount_type; } public void setDiscount_type(String discount_type) { this.discount_type = discount_type; } public String getDiscount_exp() { return discount_exp; } public void setDiscount_exp(String discount_exp) { this.discount_exp = discount_exp; } public String getCreated_at() { return created_at; } public void setCreated_at(String created_at) { this.created_at = created_at; } public String getUpdated_at() { return updated_at; } public void setUpdated_at(String updated_at) { this.updated_at = updated_at; } } } sudo个文件,然后将/etc/hosts更改为127.0.0.1 localhost

所以在127.0.0.1 *.localhost修改/etc/nginx/sites-enabled/<environment>/<your_project_name>密钥为server_name

重新加载nginx和网络服务。

<subdomain>.localhost

然后在网址栏尝试$ sudo service nginx reload $ sudo service networking reload

它对我有用。

<强>更新

在我看来,更好的解决方案是创建一个虚拟服务器,只在子域不存在时才响应http://<subdomain>.localhost,作为默认服务器(请记住,您只能定义一个服务器作为默认服务器)。

/etc/nginx/sites-enabled/development/default

确保server { listen 80 default_server; root /var/www/html/errors/404; server_name *.localhost *.<host-name>; location / { index subdomain.html; } } (通常位于nginx.conf)包含/etc/nginx/nginx.conf此虚拟服务器工作。如果没有,请将其放置,然后运行include /etc/nginx/sites-enabled/**/*;

在这种情况下,不必将$ sudo service nginx reload放在*.localhost中,而只放入/etc/hosts